带有select_tag的form_for模型对象如何嵌套它的参数?

时间:2012-02-15 16:20:55

标签: ruby-on-rails ruby ruby-on-rails-3

当我创建一个带有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],以便一切都像过去一样美好?

2 个答案:

答案 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'。

相关问题