我是网络开发的新手。轨。我一直在努力理解为什么我的表单没有完全保存。以下是我使用的代码:
<div class="field">
<%= f.label :type %><br>
<%= select_tag(:type, options_for_select([['Verb', 'Verb'], ['Adjective', 'Adjective'], ['Noun','Noun'],['Preposition','Preposition'],['Article','Article'],['Adverb','Adverb']])) %>
</div>
<div class="field">
<%= f.label :category %><br>
<%= select_tag "category",
"<option>Appliances</option>
<option>Clothes and Accessories</option>
<option>Colours</option>
<option>Communication and Technology</option>
<option>Documents and Texts</option>
<option>Education</option>
<option>Entertainment and Media</option>
<option>Family and Friends</option>
<option>Food and Drink</option>
<option>Health, Medicine and Exercise</option>
<option>Hobbies and Leisure</option>
<option>House and Home</option>
<option>Measurements</option>
<option>Personal Feelings, Opinions and Experiences (adjectives)</option>
<option>Places: Buildings</option>
<option>Places: Countryside</option>
<option>Places: Town and City</option>
<option>Services</option>
<option>Shopping</option>
<option>Sport</option>
<option>The Natural World</option>
<option>Time</option>
<option>Travel and Transport</option>
<option>Weather</option>
<option>Work and Jobs</option>".html_safe %>
</div>
PS:我保留了两种尝试使用的不同方法。
答案 0 :(得分:2)
使用f.select
代替select_tag
。
f.select(:type, [['Verb', 'Verb'], ['Adjective', 'Adjective'], ['Noun','Noun'],['Preposition','Preposition'],['Article','Article'],['Adverb','Adverb'])
或者如果您正在使用form_for
并传递一个对象,那么您也可以按照以下步骤进行操作。
select_tag(:type, options_for_select([['Verb', 'Verb'], ['Adjective', 'Adjective'], ['Noun','Noun'],['Preposition','Preposition'],['Article','Article'],['Adverb','Adverb']],f.object.type))
我们将type
的值从实际对象传递给select的选项。
当您使用option_for_select时,它希望您将所选值作为第二个参数发送。
答案 1 :(得分:0)
options_for_select
还会获取第二个参数,即所选值。
http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/options_for_select
# this will show Preposition selected
options_for_select([['Verb', 'Verb'], ['Adjective', 'Adjective'], ['Noun','Noun'],['Preposition','Preposition'],['Article','Article'],['Adverb','Adverb']], 'Preposition')
为了将来参考,请在发布问题时始终指定Rails版本。
我注意到您使用的是f.label
,在这种情况下,您可能还想查看http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select
HTH
答案 2 :(得分:0)
对于第一个,你应该使用f.select而不是select_tag,rails标签是生成html元素的助手,但是在这种情况下你需要一个链接到你的表单的项目,所以你使用表单助手来选择代替。
对于另一个例子,我不确定它是否会像那样工作,但尝试使用相同的想法,你应该发现select被传递给你的控制器,也使用符号名而不是字符串名称,含义:类别而不是&#34;类别&#34;,如果你想要一个类似&#34的短语;选择一个类别....&#34;最后添加另一个选项:prompt =&gt; &#34;选择一个类别......&#34;,希望它有帮助,看看Ryan Bates网站,是学习铁路的好地方