我的模型中有以下内容:
PRODUCTSTATES = %w[published coming_soon in_development cancelled]
我正在使用它来填充表单中的下拉列表,我正在尝试使用humanize
使列表看起来很漂亮,但似乎无法获得它。
<%= f.select :status, Product::PRODUCTSTATES %>
Product::PRODUCTSTATES.humanize
显然不起作用,也不会事先转换为字符串。
答案 0 :(得分:10)
你可以传递像
这样的数组[['caption1', 'value1'], ['caption2', 'value2']]
到select
帮助器,它会像
<select>
<option value="value1">caption1</option>
<option value="value2">caption2</option>
</select>
在你的情况下,你可以这样做:
<%= f.select :status, Product::PRODUCTSTATES.map { |s| [s.humanize, s] } %>
您将获得页面上显示的人性化状态版本,并且在提交表单时,原始(非人性化)版本将发送到服务器。
有关详细信息,请参阅select
和options_for_select
文档。