我的用户模型有很多评论,每篇评论都有很多回复。
我想允许用户在审核时回复。
在个人资料页面(来自个人资料控制器并显示操作)中,我希望能够创建回复。
<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>
这是route.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创建的回复字段。
我很困惑。任何帮助将不胜感激。
答案 0 :(得分:0)
由于您已在新操作中对@reply = @reivew.replies.new
进行了初始化,因此您应该将此@reply
对象与回复表单一起使用,我也不认为您不需要明确提供value: user_id
和value: review_id
<div class="reply-box d-none" id="reply-box">
<%= form_for @reply, url: new_user_review_reply_path(@user, @review) do |reply| %>
<%= reply.hidden_field :user_id %>
<%= reply.hidden_field :review_id %>
<%= 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>