2016-06-13 36 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 

好吧,如果你有任何想法,我解釋我的錯誤(S),這將是偉大的!

+1

請顯示您的「評論」模型 –

+0

可能是問題與後期模型。它有推動嗎? – sethi

+0

你可以添加你的Post模型嗎?我特別想知道你是否在你的Post模型中有這樣的:has_one:push。 – Pholochtairze

回答

1

在你的路線,你必須改變資源:推手做資源:推動做

,並在後期,推,評論的模型,你可能不會設置關聯。

+0

我知道它推動,但仍然工作與推,我認爲問題來自我的審查控制器。 對於協會發布has_many(推送和評論),推has_many評論,belongs_to(用戶和發佈) –

+0

如果發佈有很多:推,那麼你必須寫'@ post.pushes'而不是'@ post.push' 。 因爲has_many關聯,所以寫了複數形式的型號名稱。 如果它是has_one關聯,'@ post.push'將會正確。 – Siddhanth

+0

太棒了!這工作,但現在的問題是關於評論。 (未定義的方法'評論'爲#

相關問題