在我网站上的每个text_area上,我有一个select_box用于选择语言。它通常使用某些默认语言,但有时会检查自定义选项。我最初在控制器中安装了阵列:
@language_array = [ ["english", 1], ["french", 2], ["spanish", 3] ]
@language_array = get_custom_array if custom_language?
然后它将被视图访问:
<%= select_tag(:language, options_for_select(language_array, default_language) )%>
这很好用,text_area会显示语言并传递数字。但是,我现在想为每个页面添加多个text_areas,因此我将代码移动到帮助程序中,并从视图中的每个text_area访问帮助程序:
language_array = get_language_array(thing.id)
<%= select_tag(:language, options_for_select(language_array, default_language) )%>
然而,现在text_area搞砸了,显示数组而不是语言:
[“english”,1]
如何修复它(不更改当前存储的数组)?我还希望帮助器中的变量可用于页面上的javascript。是否有更好的方法来处理多个“事物”,而不是将所有内容从控制器移动到帮助者?
答案 0 :(得分:1)
您可以将它们作为像这样的哈希值放在模型中
<强> user.rb 强>
def User
def self.language
{
'English' => '1',
'French' => '2',
....
}
end
end
并在控制器中获取散列到变量中,它将在html.erb和js.erb中可访问
<强> users_controller.rb 强>
@language = User.language
然后在构建表单时,您可以将其作为
<%= talent_field.select(:language, @language, {}, {:class => 'language-select'} %>