Humanize rails选择帮手

时间:2012-02-19 16:04:42

标签: ruby-on-rails-3

我的模型中有以下内容:

  PRODUCTSTATES = %w[published coming_soon in_development cancelled]

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

  <%= f.select :status, Product::PRODUCTSTATES %>

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

1 个答案:

答案 0 :(得分:10)

你可以传递像

这样的数组
[['caption1', 'value1'], ['caption2', 'value2']]

select帮助器,它会像

一样生成smth
<select>
  <option value="value1">caption1</option>
  <option value="value2">caption2</option>
</select>

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

<%= f.select :status, Product::PRODUCTSTATES.map { |s| [s.humanize, s] } %>

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

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

相关问题