Rails:将文本形式转换为选择框

时间:2012-03-04 20:49:49

标签: ruby-on-rails

说实话,我几乎发现html表单比Rails表单助手更直接。我正在尝试将此文本格式转换为选项框,其中选项加拿大,美国,墨西哥为字符串

 <p><%= f.label :country %><br />
  <%= f.text_field :country %></p>

因为模型已经在块变量“f”中表示,所以我不确定如何改变语法,因为模型通常首先在变量和选项的复杂散列中表示http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select

有人能告诉我吗?

2 个答案:

答案 0 :(得分:9)

以下内容应该有效:

<%= f.select :country, [["Canada", "Canada"], ["Mexico", "Mexico"], ["United States", "United States"]] %>

您可以在Rails Guides&amp; API docs。正如@ ka8751所说,如果你有一个Country模型,collection_select会让这更容易:

<%= f.collection_select :country, Country.all, :id, :name %>

其中:id用于value标记的实际<option>:name用于显示的内容。

如果您拥有Country模型,那么您应该考虑database normalization

答案 1 :(得分:0)

我认为您在这里犯了错误:您使用的是text_field而不是select方法。要制作选择框,我建议您使用collection_select方法:

<%= f.collection_select :country, Country.all, :id, :name %>

还有一个很棒的宝石country_select来解决你的问题,它由formtastic formtastic使用,我也建议你用它来构建你的表格。