2016-04-11 15 views
1

でアクセスパラメータにできませんが、私はレストランカート、およびユーザーモデルを持っています。レストランに入るときにカートフォームにリダイレクトしたいと思います。このフォームはテーブル番号を求められ、その後、現在のユーザーのカートを作成します。私は、彼らがホワイトリストに含まれていないが、私はそれらを許可する方法を見つけることができないと仮定し、渡されたパラメータRailsの - コントローラ

Couldn't find Restaurant with 'id'= 

に問題を取得し、フォームを送信するときしかし、...私は任意の提案のために感謝してます!

渡さのparams:

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

私はカートコントローラに入力

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

で隠しフィールドを持つrestaurant_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 
+0

@Krisityanは、hidden_​​fieldのHTMLコードをチェックし、把握しようとします。 – uzaif

答えて

4

あなたはparamsに見ると、あなたがcart内部restaurant_idを持っているので、あなたはparams[:cart][:restaurant_id]のようにアクセスする必要がある=

「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 
+1

うん、それはそれです!ありがとうございます:) 7分で回答を受け入れるでしょう –

+0

強力なparams宣言も忘れずに更新してください - 'params.require(:cart).permit(cart:[:restaurant_id、:table_id])' – jeffdill2

+0

@ jeffdill2あなたは間違っている!それは変わっていないはずです。 – Pavan

関連する問題