Create the second step of a nested form?

I am trying to create a nested form with two bearings (= post do push do review) And I have this error:

Error generated

I would like to know if I have good practices for the success of this creation?

My code

Views / stuffs / show:

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

Reviews / controller:

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

  def new 
    @review = Review.new 
  end 

  def create
    @review = @post.push.reviews.create(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 = Push.find(params[:push_id])
  end 

end

Views / reviews / new:

<%= simple_form_for([@post, @post.push.reviews.build]) do |f| %>
  <%= f.input :rating %>
  <%= f.input :comment %>
  <%= f.button :submit %>
<% end %>

& routes:

resources :posts do 
  resources :pushs do 
    resources :reviews
  end 
end 
+4
source share

All Articles