0

在我网站上的每个 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_area,所以我将代码移到了一个帮助器中,并从视图中的每个 text_area 访问该帮助器:

language_array = get_language_array(thing.id)
<%= select_tag(:language, options_for_select(language_array, default_language) )%>

但是,现在 text_area 出现混乱,并显示数组而不仅仅是语言:

[“英语”,1]

如何修复它(不更改当前存储的数组)?我还希望帮助程序中的变量可用于页面上的 javascript。有没有比将所有东西从控制器转移到助手更好的方法来处理多个“事物”?

4

1 回答 1

1

您可以将它们作为像这样的散列放在模型中

用户.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'} %>
于 2013-08-14T17:43:23.513 回答