当我创建一个带有form_for
的对象并在其中放置select_tag
时,我希望所选的值作为模型哈希内的哈希值转到params,例如params[:model][:attribute1]
,因为这是过去基本形式的文本字段对我的表现。不是这里的情况:
<%= form_for(@vote, url: judgment_votes_path(@vote.judgment)) do |i| %>
<%= select_tag(:yayornay, options_for_select(%w[yes no undecided stand_aside])) %>
<div class='actions'>
<%= i.submit 'Save vote' %><br />
</div>
<% end %>
上面给了我一个params[:yayornay]
。 Apidock在form_for上的报道几乎没有消除我的困惑。是否有一种简单的方法可以构建我的select_tag
参数params[:vote][:yayornay]
,以便一切都像过去一样美好?
答案 0 :(得分:1)
在你的情况下,你可以使用i.select这样:
<%= i.select :yayornay, ... %>
或者像这样使用select_tag:
<%= select_tag "vote[yayornay]", ... %>
当您使用“i.select”时,rails会自动为您构建前缀“vote”,因为您正在使用@vote的表单对象。如果您不想使用“i.select”,则必须自己手动指定select元素的名称。
希望这有帮助。
答案 1 :(得分:1)
您正在使用select_tag帮助程序,这使得select标记语法更容易使用。在这里查看表单助手:http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html以获取与对象相对应的选择标签(例如:在您的案例中投票)。您可以使用select helper,例如select(:vote,:yayornay,...)或i.select(:yayornay,...)
仅供参考,使用'f'作为表单对象更常见,而不是'i'。