2016-04-11 4 views
1

Ich habe ein Restaurant, Wagen und ein Benutzer Modell. Ich möchte gerne zu einem Cart Formular weitergeleitet werden, wenn Sie ein Restaurant betreten. Dieses Formular wird mich nach einer Tischnummer fragen und danach einen Einkaufswagen für den aktuellen Benutzer erstellen. Wenn jedoch das Formular abschicken bekomme ich ein Problem mit den übergebenen ParameternRails - Kein Zugriff auf Parameter in der Steuerung

Couldn't find Restaurant with 'id'= 

Ich nehme an, sie sind nicht in der weißen Liste, aber ich kann nicht finden, wie sie erlauben ... Ich werde für alle Anregungen dankbar sein!

Die übergebenen params:

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

Ich bin der restaurant_id mit einem versteckten Feld und die Tabelle mit einem Eingang vorbei

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

Im Warenkorb Controller:

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

die hidden_field HTML-Code @Krisityan zu überprüfen und versuchen – uzaif

Antwort

4

finden konnte Restaurant nicht mit 'id' =

Wenn Sie die params schauen, Sie haben restaurant_id innen cart, so dass Sie es wie params[:cart][:restaurant_id] zugreifen müssen. Sie müssen auch params[:table_id] zu params[:cart][:table_id] auch ändern, um einen anderen Fehler zu vermeiden.

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

Yep, um herauszufinden, das ist es !! Danke :) Wird die Antwort in 7 Minuten annehmen –

+0

Vergessen Sie nicht, Ihre starke params Deklaration auch zu aktualisieren - 'params.require (: cart) .permit (cart: [: restaurant_id,: table_id])' – jeffdill2

+0

@ jeffdill2 Sie liegen falsch! Es sollte unverändert bleiben. – Pavan

Verwandte Themen