I haven't been able to solve the error for a couple of days because of the nested path, what is the problem?
I realize that there is no such nested path as Rails is looking for, but why is he looking for it?
routes.rb:
resources :films do
resources :reviews, except: %i[new show]
end
ReviewsController:
class ReviewsController < ApplicationController
include FilmsOpinions
before_action :set_film
before_action :authenticate_user!
def create
@review = @film.reviews.build review_create_params
if @review.save
flash[:success] = t 'contacts.create.success'
redirect_to film_path(@film)
else
load_film_reviews(do_render: true)
end
end
private
def review_create_params
params.require(:review).permit(:title, :desc).merge(user: current_user)
end
def set_film
@film = Film.find params[:film_id]
end
end
reviews/_form:
= render 'shared/errors', object: @review
= form_with model: [@film, @review] do |f|
.form-group
label.input-label.text-white = t(".title")
= f.text_field :title, class: "form-control"
.form-group
label.input-label.text-white = t(".please_add_your_reviews")
= f.text_area :desc, class: "form-control rounded-0"
.btn-primary
= f.submit t("submit")
and my render in films/show
= render 'reviews/form'
At first glance, the basic things that I have already done, but now for some reason I encounter an error
Nested path problem -
= form_with url: film_reviews_url(@film, @review) do |f|
ActionController::ParameterMissing - param is missing or the value is empty: review:
nested model problem -
= form_with scope: :review, url: film_reviews_url(@film, @review) do |f|
Thanks to the team leader for the answer. Solved problems for nested models