Rails从索引页面传递params

时间:2014-12-10 16:32:27

标签: ruby-on-rails

我有一个Rails应用程序,我在索引页面上列出记录。 其中一列是:

<td><%= check_box_tag "event_ids[]", event.id %></td>

索引页底部有一个按钮:

<%= link_to 'Submit ', addinvtimes_invtimes_path, :class => 'btn btn-success' %>

我希望此代码在invtimes控制器中运行:

   def addinvtimes
    if params[:event_ids] != nil
      params[:event_ids].each do |i|
        newinvtime = Invtime.new(
            linetype_id: 1,
            invoice_id: @invoice.id,
            event_id: i.to_i
        )
      end
    end
  end

但是,即使检查了几个方框,params[:event_ids]也是零。

你不能使用索引页面提交params吗?它必须是一种形式吗?

感谢您的帮助!

更新1

我尝试在调用中传递数组event_ids[]

<%= link_to 'Submit ', addinvtimes_invtimes_path(:workorder_id => @workorder, :event_ids[] => event_ids[]), :class => 'btn btn-success' %>

但是,得到了:

wrong number of arguments (0 for 1..2)

我只需要在控制器代码event_ids[]中访问数组addinvtimes

UPDATE2

我尝试做的就是列出一堆记录并包含一个复选框列。然后在控制器中获取已检查行的ID列表。

1 个答案:

答案 0 :(得分:0)

页面类型(索引,新建,编辑等)不会影响提交数据的能力,但是,如果要使用纯HTML将数据发布到params哈希中,则需要表单。< / p>

UPDATE1:

对于更新,添加:event_ids []作为链接的参数只会将其作为查询字符串参数添加到链接,并在解析视图时为其分配event_ids []的值。对html中复选框的更改不会反映在查询字符串中。我认为,最简单的方法是将复选框和提交包装到表单标签中,然后将数据发布到控制器操作中。

哦,我刚看到,错误的参数错误导致在没有索引的情况下调用event_ids上的[]。我不确定,但显然你不能使用变量名称。[/ p>