Rails Button_to不传递模型参数

时间:2013-07-03 22:10:16

标签: ruby-on-rails ruby parameters

我的产品索引页面中有以下内容:

<%= 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 #start动作正在我的控制器确定中。这看起来像:

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"}

Fnally - 问题 - 我的strong_params方法无法处理这些参数,因为我关心的三个参数没有嵌套在以'Orderitem'作为键的哈希中。我希望,为了让我的创作行动起作用,我需要这样的东西:

      Parameters: {"authenticity_token"=>"blah=", "orderitems"=>{"item_id"=>"2264", "user_id"=>"1", "order_id"=>"1"}}

但是我不能为我的生活弄清楚怎么样,用button_to我能够做到这一点 - 我尝试了一个form_for,但这也没能奏效。在这个问题上,我在砖墙上敲了几天...所以,如何将我的三个ID发布到我的OrderItemsController,从产品的索引视图创建操作,但绕过任何form_for或新操作?有可能吗?

请以完全错误的方式告诉我是否接近这种情况(将项目添加到购物篮中)。

1 个答案:

答案 0 :(得分:1)

这样,您可以将标准哈希视为strong parameters

支持的哈希
raw_parameters = {"authenticity_token"=>"blah=",  "item_id"=>"2264", "user_id"=>"1", "order_id"=>"1"}

parameters = ActionController::Parameters.new(raw_parameters)
parameters.permit(:user_id, :order_id, :item_id)