2016-06-13 2 views
0

Я хотел бы создать новую форму обзора, но она возвращает мне ошибку, чем я не понимаю. Согласны ли вы объяснить мне проблему?Создайте вложенную форму: «undefined method` push »

Мой код

маршруты:

resources :posts do 
    resources :pushs do 
     resources :reviews 
    end 
    end 

Ссылка:

<%= link_to 'Add comment', new_post_push_review_path(@push.post_id, @push) %> 

Форма, которую я хотел бы построил:

<%= simple_form_for([@post, @post.push.reviews.build]) do |f| %> 

<%= f.input :rating %> 
<%= f.input :comment %> 
<%= f.button :submit %> 

<% end %> 

enter image description here

& наконец, обзор контроллера:

class ReviewsController < ApplicationController 
    before_action :authenticate_user! 
    before_action :find_push 
    before_action :find_post 




    def new 
    @review = Review.new 
    @pushs = Push.all 
    end 

    def create 
    @push = Push.find(params[:review][:id]) 
    @review = Review.new(review_params) 

    @review.post_id = @push.post_id 
    @review.push_id = @push.id 
    @review.user_id = current_user.id 

    if @review.save 
     redirect_to push_path(@push.post_id, @push) 
    else 
     render 'new' 
    end 
    end 

private 

    def review_params 
    params.require(:review).permit(:rating, :comment) 
    end 



    def find_post 
    @post = Post.find(params[:post_id]) 
    end 

    def find_push 
    @post = Post.find(params[:post_id]) 
    @push = @post.pushs.find(params[:push_id]) 
    end 

end 

Ну, если у вас есть какие-либо идеи, чтобы объяснить мне мою ошибку (ы), что было бы здорово !!

+1

, пожалуйста, покажите свою модель 'Reviews' –

+0

Возможно, проблема связана с моделью сообщения. У этого есть has_one push? – sethi

+0

Не могли бы вы добавить свою модель публикации, пожалуйста? Я особенно хочу знать, есть ли у вас в вашей модели Post что-то вроде: has_one: push. – Pholochtairze

ответ

1

В маршрутах, вы должны изменить ресурсы: запихивает сделать на ресурсы: выталкивает сделать

И вы не могли бы установить ассоциации в пост, Пуш, модели Review.

+0

Я знаю, что это за толкает, но работает тоже с толчками, я думаю, что проблема идет от моего контроллера обзора. И для ассоциаций Post has_many (pushs & review), Push has_many reviews, belongs_to (User & Post) –

+0

Если Post имеет много: толкает, тогда вам нужно писать '@ post.pushes' вместо' @ post.push' , Мы записываем множественную форму имени модели из-за ассоциации has_many. '@ post.push' будет правильным, если это has_one-ассоциация. – Siddhanth

+0

Отлично! Это работает, но теперь проблема в обзорах. (неопределенный метод 'reviews 'для #