我有一个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列表。
答案 0 :(得分:0)
页面类型(索引,新建,编辑等)不会影响提交数据的能力,但是,如果要使用纯HTML将数据发布到params哈希中,则需要表单。< / p>
UPDATE1:
对于更新,添加:event_ids []作为链接的参数只会将其作为查询字符串参数添加到链接,并在解析视图时为其分配event_ids []的值。对html中复选框的更改不会反映在查询字符串中。我认为,最简单的方法是将复选框和提交包装到表单标签中,然后将数据发布到控制器操作中。
哦,我刚看到,错误的参数错误导致在没有索引的情况下调用event_ids上的[]。我不确定,但显然你不能使用变量名称。[/ p>