Rails参数未在帖子上传递

时间:2013-11-25 04:56:28

标签: ruby-on-rails ruby post selector

在此(索引)视图的控制器中,变量@eventtypes被分配了4个值(运动,音乐会,喜剧和戏剧)

然后下面的表单检索4个选项并在下拉菜单(HTML选择框)中显示它们

问题:当我提交此表单时,索引视图会显示事件名称&数字,但eventtype为空。我是一个总菜鸟,但我怀疑我需要一个“f”。行中的某些内容以“<%= select”开头。

请帮我理解解决方案。我使用的是最新的Rails 4和Ruby 2.0.0

<%= form_for(@tix) do |f| %>
  <div class="field">
    <%= f.label :eventname %><br>
    <%= f.text_field :eventname %>
  </div>
  <div class="field">
    <%= f.label :eventtype %><br>
    <%= select(:eventtype, :eventtype, @eventtypes.collect {|e| [ e.category, e.id ] })  %>
  </div>
  <div class="field">
    <%= f.label :price %><br>
    <%= f.number_field :price %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

2 个答案:

答案 0 :(得分:1)

当你说:

时,你可能会选择Kernel#select
<%= select(:eventtype, :eventtype, @eventtypes.collect {|e| [ e.category, e.id ] })  %>

你想要select form helper

<%= f.select(...

请参阅文档以获取正确的参数。

答案 1 :(得分:0)

正确的语法是

<%= f.select(:eventtype, @eventtypes.collect {|p| [p.category] }, { include_blank: true }) %>

注意:链接http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html#method-i-select的语法不正确,因为它缺少'('在第一个'之前':'eventtype'