我正在尝试传递一个变量来渲染:
def monitor
@peripheries = Periphery.where('periphery_type_name=?','monitor')
render 'index', type: 'Monitor'
end
我想在这里使用'输入'索引视图中的变量看起来像这样:
<%= render 'some_partial', periphery_type: type %>
也会渲染一些东西。但我想用那种&#39;类型&#39;变量
答案 0 :(得分:5)
有两种方法可以在控制器和视图之间传递变量:
def monitor
@peripheries = Periphery.where('periphery_type_name=?','monitor')
@type = 'Monitor'
render 'index'
end
Rails会将属于控制器的任何实例变量导出到视图上下文。因此,您可以在视图中调用@type
或任何部分。
def monitor
@peripheries = Periphery.where('periphery_type_name=?','monitor')
render 'index', locals: { type: 'Monitor' }
end
请注意,您需要将哈希值传递给locals
选项。您还需要将局部变量传递给部分视图:
<%= render 'some_partial', locals: { periphery_type: type } %>
使用本地人通常是一个好主意,因为它鼓励脱钩并且可以让你的部分更加可重复使用。
答案 1 :(得分:1)
在monitor方法中,您可以将类型变量传递给索引视图,例如
def monitor
@type = 'monitor'
@peripheries = Periphery.where('periphery_type_name = ?', @type)
render 'index'
end
并在您的视图中
<%= render 'some_partial', locals: {periphery_type: @type}
(注意这不是设置类型变量的好方法,我需要更好地理解该类以建议如何设置该变量。)
答案 2 :(得分:1)
您可以使用redirect_to some_path(params: params)