2013-03-13 4 views
0

Я пытаюсь создать обзор в моем приложении, однако, когда я делаю следующее в моем контроллере:ActiveRecord :: RecordNotFound - продукт без ID

def create 
    @product = Product.find(params[:product_id]) 
    @review = @product.reviews.create(params[:review]) 

    redirect_to product_path(product) 
    end 

я получаю Couldn't find Product without an ID. Я заполняю форму, и некоторые, где вдоль линии, когда он не может показаться, это следующая строка @product = Product.find(params[:product_id]), чтобы найти продукт

маршруты

resources :products do 
    resource :reviews 
    end 

продукты/show.html.erb

<%= form_for(@product.reviews.build) do |f| %> 
    <div class="field"> 
    <%= f.label :title %> 
    <br/> 
    <%= f.text_field :title %> 
    </div> 
    <div class="field"> 
    <%= f.label :author %> 
    <br/> 
    <%= f.text_field :author %> 
    </div> 
    <div class="field"> 
    <%= f.label :content %> 
    <br/> 
    <%= f.text_area :content %> 
    </div> 
    <div class="field"> 
    <%= f.label :rating %> 
    <br/> 
    <%= f.number_field :rating %> 
    </div 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
    <% end %> 
+0

Не могли бы вы выслать ваши параметры? Я считаю, что ваш метод 'params' не имеет ключа: product_id. – sergelerator

ответ

-1

изменить form_for к

form_for [@product, @product.reviews.build] do |f| 

это изменяет действие на /products/@product.id/reviews в соответствии с вашим вложенным маршрутом

+0

Я пробовал это раньше и сделал свой form_for похожим на следующее: '<% = form_for ([@ product, @ product.reviews.build]) do | f | %> ', но получил« неопределенную локальную переменную или метод «продукт», который указывал на метод create моего review_controller – 2013-03-13 03:33:22

+0

Я считаю, что проблема в том, что в моем 'review_controller' говорится, что« Продукт »не определен? – 2013-03-13 03:43:49

+0

Вы попробовали еще раз? ваша проблема: 'params [: product_id]' is nil, поэтому было высказано исключение, что продукт не может быть найден без id. Я предполагаю, что, поскольку вы находитесь в шоу-действии продукта, '@ product' уже является постоянным объектом, поэтому это решит вашу проблему. если вы получаете другую ошибку при попытке этого решения, добавьте эту ошибку в свой вопрос. – jvnill

Смежные вопросы