У меня есть модель пользователя, у которой много отзывов, и у каждого отзыва много ответов.
Я хочу разрешить пользователю отвечать по отзыву.
На странице профиля (из контроллера профиля и действия show) я хочу иметь возможность создавать ответы.
<div class="reply-box d-none" id="reply-box">
<%= form_with(model: Reply, url: new_user_review_reply_path(@user, @review)) do |reply| %>
<%= reply.hidden_field :user_id, value: @user %>
<%= reply.hidden_field :review_id, value: @review %>
<%= reply.text_field :reply_content%>
<div class="comment-box-btns mb-5">
<%= reply.submit "submit", class: 'submit-btn d-inline-block ml-2 float-right'%>
<div class="cancel-btn d-inline-block float-right">cancel</div>
</div>
<% end %>
</div>
Вот маршрут. Rb
resources :users do
resources :reviews do
resources :replies
end
end
Вот контроллер ответа:
class RepliesController < ApplicationController
def new
@user = User.find(params[:user_id])
@reivew = @user.reviews.find(params[:review_id])
@reply = @reivew.replies.new
end
def create
@user = User.find(params[:user_id])
@reivew = @user.reviews.find(params[:review_id])
@reply = @reivew.replies.create!(reply_params)
respond_to do |format|
format.html {redirect_to(profile_path(param[:user_id]))}
format.js
end
end
private
def reply_params
params.require(:reply).permit(
:reply_content,
:user_id,
:review_id
)
end
end
Я не знаю, как настроить "form_with". Пока это просто говорит
undefined method `reply_content' for #<Class:0x007f8c7396aaa8>
reply_content - это поле в ответе, которое я хочу создать с помощью text_area.
Я очень смущен. Любая помощь будет принята с благодарностью.