我有一个视图(我们将其称为“视图#1”),该视图允许用户使用表单上的下拉菜单选择某个表进行查看。然后将该参数传递给我的控制器。我想做的就是让我的控制器采用该参数,并使用它来更改它定向到的视图(视图2)上元素的可见性。
视图2具有3个表。一旦我的Controller中的方法运行,在任何给定的时间,只有一个表应该可见。当前,所有3个表都有唯一的ID,并且在CSS文件中具有display:none属性。因此,如果用户从视图#1中选择“ 1”,我希望视图#2将表1的显示设置为块,将表2和3设置为display:none。我可以在Controller中执行此操作还是需要在JavaScript中执行此操作?如果必须在JavaScript中执行此操作,如何将参数值从控制器传递给JS函数调用?
最佳答案
您可能应该将每个表分解成自己的部分,并仅渲染要显示的表:
def some_action
@table_to_show = "table_1"
# table_1 should be determined by the user's selection from View #1
# probably something like: @table_to_show = params[:user_selection]
end
在您看来#2:
<%= render @table_to_show %>
依次渲染模板:_table_1.html.erb
您可以使用CSS / js,但可能不应该在控制器级别处理。