我的产品索引页面中有以下内容:
<%= button_to "Add", user_order_orderitems_path(user_id: current_user.id, item_id: x.id, order_id: current_user.group.current_order.id), class: "btn btn-mini" %>
我可以从日志中看到,我的控制器中的 Orderitems#create 操作正在拾取它。这看起来像:
def create
@orderitem = Orderitem.new(orderitem_params)
if @orderitem.save
redirect_to items_path
else
redirect_to items_path
end
end
private
def orderitem_params
params.require(:orderitem).permit(:user_id, :order_id, :item_id)
end
end
button_to 调用中指定的参数正在创建中,并在日志中显示为:
Started POST "/users/1/orders/1/orderitems?item_id=2264" for 127.0.0.1 at 2013-07-03 22:45:24 +0100
Processing by OrderitemsController#create as HTML
Parameters: {"authenticity_token"=>"blah=", "item_id"=>"2264", "user_id"=>"1", "order_id"=>"1"}
最后 - 问题 - 我的 strong_params 方法无法处理这些参数,因为我关心的三个参数没有嵌套在以“Orderitem”为键的哈希中。我希望,为了使我的创建操作起作用,我需要类似的东西:
Parameters: {"authenticity_token"=>"blah=", "orderitems"=>{"item_id"=>"2264", "user_id"=>"1", "order_id"=>"1"}}
但是我一生都无法弄清楚如何使用 button_to 来做到这一点 - 我尝试了 form_for,但这也没有奏效。在这个砖墙上敲了几天的头......那么,如何将我的三个 id 发布到我的 OrderItemsController 从 Products 的索引视图创建操作但绕过任何 form_for 或新操作?可能吗?
如果我以完全错误的方式处理这种情况(将物品添加到购物篮),请告诉我。