Sql Rails 4-comment.create保存:文本,但不保存:commenter
当我创建一个新的注释时,文本保存得很好,但是注释者没有被保存。我已经验证了commenter的列存在,并且正在传递参数。字段没有插入到表中,我不知道为什么 表格:Sql Rails 4-comment.create保存:文本,但不保存:commenter,sql,ruby-on-rails,ruby,Sql,Ruby On Rails,Ruby,当我创建一个新的注释时,文本保存得很好,但是注释者没有被保存。我已经验证了commenter的列存在,并且正在传递参数。字段没有插入到表中,我不知道为什么 表格: 我猜您希望表单中的评论者id而不是用户id。请将表单中的用户id行更改为: <%= hidden_field_tag :commenter_id, params[:commenter_id] %> 您是否检查了用户模型和注释模型之间的关联? 在用户模型中,它应该有多个:注释,在注释模型中,它属于:User在表单中添加一个
我猜您希望表单中的评论者id而不是用户id。请将表单中的用户id行更改为:
<%= hidden_field_tag :commenter_id, params[:commenter_id] %>
您是否检查了用户模型和注释模型之间的关联?
在用户模型中,它应该有多个:注释,在注释模型中,它属于:User在表单中添加一个字段,该字段将传递注释者进行注释
<%= form_for @comment do |f| %>
<p>
<%= f.label :new_comment %>
<%= f.text_field :text %>
<%= hidden_field_tag :user_id, params[:user_id] %>
<%= hidden_field_tag :post_id, params[:id] %>
<%= hidden_field_tag 'comment[commenter]', params[:user_id] %>
<%= f.submit "Comment" %>
</p>
<% end %>
表单中的commenter字段在哪里?即使没有commenter字段,参数1仍然作为commenter发送。它只是没有保存它。它是作为:commenter还是:commenter\u id发送的?如果是后者-您需要将其添加到允许的字段中。我将用户和帖子id添加为隐藏字段,以便更轻松地将评论保存到正确的帖子中。该属性的名称仅为commenter。这是表中列的名称,也是我在错误页或终端中看到传递的参数的名称。在这种情况下,您希望如何获得commenter值?它是在表单中输入的,还是在控制器或模型中设置的?
<%= hidden_field_tag :commenter_id, params[:commenter_id] %>
@comment = @post.comments.create(params[:comment].permit(:text, :commenter_id))
<%= form_for @comment do |f| %>
<p>
<%= f.label :new_comment %>
<%= f.text_field :text %>
<%= hidden_field_tag :user_id, params[:user_id] %>
<%= hidden_field_tag :post_id, params[:id] %>
<%= hidden_field_tag 'comment[commenter]', params[:user_id] %>
<%= f.submit "Comment" %>
</p>
<% end %>
def create
@user = User.find(params[:user_id])
@post = @user.posts.find(params[:post_id])
@comment = @post.comments.new(params[:comment].permit(:text, :commenter))
@comment.commenter = @user.id
@comment.save
redirect_to show_post_path(@user, @post)
end