Humanize rails选择帮手

Sli*_*k23 4 ruby-on-rails-3

我的模型中有以下内容:

  PRODUCTSTATES = %w[published coming_soon in_development cancelled]
Run Code Online (Sandbox Code Playgroud)

我正在使用它来填充表单中的下拉列表,我正在尝试humanize使列表看起来很漂亮,但似乎无法得到它.

  <%= f.select :status, Product::PRODUCTSTATES %>
Run Code Online (Sandbox Code Playgroud)

Product::PRODUCTSTATES.humanize 显然不起作用,也没有事先转换为字符串.

KL-*_*L-7 10

你可以传递像这样的数组

[['caption1', 'value1'], ['caption2', 'value2']]
Run Code Online (Sandbox Code Playgroud)

select帮手,它会产生像水木清华

<select>
  <option value="value1">caption1</option>
  <option value="value2">caption2</option>
</select>
Run Code Online (Sandbox Code Playgroud)

在你的情况下你可以这样做:

<%= f.select :status, Product::PRODUCTSTATES.map { |s| [s.humanize, s] } %>
Run Code Online (Sandbox Code Playgroud)

您将获得页面上显示的人性化状态版本,并且在提交表单时将原始(非人源化)版本发送到服务器.

有关详细信息,请参阅selectoptions_for_select文档.