2016-04-11 11 views
1

deki parametreleri edilemiyor Ben Restaurant, Sepeti ve Kullanıcı modeli var. Bir restoran girerken Cart formuna yeniden yönlendirilmek istiyorum. Bu form bana bir tablo numarası soracak ve daha sonra mevcut kullanıcı için bir sepet oluşturacaktır. formu göndererek Ancak, ben onlar beyaz listede bulunmayan varsayalım geçirilen parametreleri Raylar - kontrolörü

Couldn't find Restaurant with 'id'= 

ile ilgili bir sorun olsun ama onları ... Herhangi bir öneriye için müteşekkir olacaktır izin nasıl bulamıyor!

params:

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

Ben sepeti kontrolörü olarak girdi

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

ile gizli bir alanlı restaurant_id ve masa geçirerek:

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

hidden_field html kodunu kontrol edip – uzaif

cevap

4

Eğer params içine baktığınızda params[:cart][:restaurant_id] gibi erişmesi gereken böylece =

, sen cart içeride restaurant_id var 'kimlik' ile Restoranı bulunamadı. Ayrıca, başka bir hatayı önlemek için params[:table_id]'u params[:cart][:table_id]'a da değiştirmeniz gerekir.

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 anlamaya çalışalım @Krisityan, bu şu !! Teşekkür ederim :) 7 dakika içinde cevabı kabul eder –

+0

Güçlü params bildirimini de güncellemeyi unutmayın - 'params.require (: cart) .permit (cart: [: restaurant_id,: table_id])' – jeffdill2

+0

@ jeffdill2 Hatalısınız! Değişmeden kalmalıdır. – Pavan