如何在Rails中使用控制器渲染部分?

时间:2014-05-14 06:39:46

标签: ruby-on-rails ajax partial-views

在我的应用程序中,用户单击三个选项之一。当用户点击该选项时,我想获取该选项,然后使用弹出窗口显示有关它的更多信息。但是,我想使用控制器根据用户选择进行api调用,以便我可以获得有关他们选择的选择的更多数据。

如何在我的控制器中创建一个功能呢?

1 个答案:

答案 0 :(得分:1)

如果你想渲染部分,我想你想通过AJAX调用控制器。我会通过在表示三个选项的链接中添加remote: true并相应地在控制器中设置操作来解决此问题。

例如:

<%= link_to 'choice 1', choice_path, class:'choice-link', data: { choice: 1 }, remote: true %>

# controller
def choice_action
  # some filter based on which choice (1, 2 or 3) the user chose
  render partial: 'path/to/partial', layout: false if request.xhr?
end

layout标志表示您只返回部分生成的HTML,而不是将其包装在渲染服务器生成的HTML模板时通常应用的应用程序布局中。

为了将HTML附加到DOM,我在选择链接上使用了一个监听器,例如:

$('.choice-link').on 'ajax:success', (data, status, xhr) ->
  $('#popup').html(data)