创建一个嵌套的表单:"未定义的方法`push'"

时间:2016-06-13 12:57:29

标签: ruby-on-rails ruby ruby-on-rails-3

我想建立一个新的评论表单,但它给我的错误比我不明白。你能解释一下这个问题吗?

我的代码

路线:

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 个答案:

答案 0 :(得分:1)

在您的路线中,您必须更改资源:推送资源:推送

你可能没有在Post,Push,Review模型中设置关联。