Rails - 无法访问控制器中的参数

时间:2016-04-11 12:33:32

标签: ruby-on-rails parameters

我有餐厅购物车以及用户模型。我想在进入餐厅时被重定向到购物车表格。此表格将询问我一个表号,然后为当前用户创建一个购物车。但是,在提交表单时,我遇到了传递参数的问题

Couldn't find Restaurant with 'id'=

我想他们不在白名单中,但我找不到如何允许他们......我会感谢任何建议!

传递的参数:

{"utf8"=>"✓",
"authenticity_token"=>"*****",
 "cart"=>{"restaurant_id"=>"1",
 "table_id"=>"4"},
 "commit"=>"Create Cart",
 "user_id"=>"1"}

我正在传递带有隐藏字段的restaurant_id和带有输入的表格

<%= f.hidden_field :restaurant_id, value: params[:restaurant_id] %>
<%= f.input :table_id %>

在购物车控制器中:

    def create
        @restaurant = Restaurant.find(params[:restaurant_id])
        @table = @restaurant.tables.find(params[:table_id])
        @cart = current_user.carts.new(cart_params)
    ...
    end
....
    def cart_params
      params.require(:cart).permit(:restaurant_id, :table_id)
    end

1 个答案:

答案 0 :(得分:5)

  

无法找到带有&#39; =&#39; =

的餐厅

当您查看restaurant_id时,cart内有params[:cart][:restaurant_id],因此您需要像params[:table_id]一样访问它。此外,您还需要将params[:cart][:table_id]更改为def create @restaurant = Restaurant.find(params[:cart][:restaurant_id]) @table = @restaurant.tables.find(params[:cart][:table_id]) @cart = current_user.carts.new(cart_params) ... end 以避免其他错误。

EvtImage image (datatype)