<p><%= f.label :country %><br />
<%= f.text_field :country %></p>
因为模型已经在块变量“f”中表示,所以我不确定如何改变语法,因为模型通常首先在变量和选项的复杂散列中表示http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select
有人能告诉我吗?
答案 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使用,我也建议你用它来构建你的表格。