如何使用 current_user 自动分配评论者?
How to automatically assign commenter using current_user?
我是 Rails 的新手,在我根据他们的 (tutorial) 制作文章模型后,我想使用评论模型,但它由两部分组成:第一部分是其中 "Commenter" 输入的名称将与评论和评论的 "body" 一起出现在旁边。
因为我正在使用 devise,所以我想跳过 Commenter 输入,所以用户只需输入 his/her 评论,他们的用户名就会自动分配给评论。我已经设置好所有内容(设计、评论模型、用户模型等),并将用户名字段集成到设计 gem 中,以便它可以与 current_user.username 一起使用。我正在使用 Rails 4
这是_comment.html.erb
的代码
<p>
<strong>Commenter:</strong>
<%= comment.commenter %>
</p>
<p>
<strong>Comment:</strong>
<%= comment.body %>
</p>
<p>
<%= link_to 'Destroy Comment', [comment.article, comment],
method: :delete,
data: { confirm: 'Are you sure?' } %>
</p>
评论控制器:
class CommentsController < ApplicationController
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.create(comment_params)
redirect_to article_path(@article)
end
def destroy
@article = Article.find(params[:article_id])
@comment = @article.comments.find(params[:id])
@comment.destroy
redirect_to article_path(@article)
end
private
def comment_params
params.require(:comment).permit(:commenter, :body)
end
end
你有机会在你的 comment_params
方法中混合参数,所以我会在那时进行任何必要的修改。
例如:
params.require(...).permit(...).merge(
commenter_id: current_user.id,
commenter_name: current_user.name
)
对于模型来说,了解控制器的状态是非常的错误形式。
我是 Rails 的新手,在我根据他们的 (tutorial) 制作文章模型后,我想使用评论模型,但它由两部分组成:第一部分是其中 "Commenter" 输入的名称将与评论和评论的 "body" 一起出现在旁边。
因为我正在使用 devise,所以我想跳过 Commenter 输入,所以用户只需输入 his/her 评论,他们的用户名就会自动分配给评论。我已经设置好所有内容(设计、评论模型、用户模型等),并将用户名字段集成到设计 gem 中,以便它可以与 current_user.username 一起使用。我正在使用 Rails 4
这是_comment.html.erb
的代码<p>
<strong>Commenter:</strong>
<%= comment.commenter %>
</p>
<p>
<strong>Comment:</strong>
<%= comment.body %>
</p>
<p>
<%= link_to 'Destroy Comment', [comment.article, comment],
method: :delete,
data: { confirm: 'Are you sure?' } %>
</p>
评论控制器:
class CommentsController < ApplicationController
def create
@article = Article.find(params[:article_id])
@comment = @article.comments.create(comment_params)
redirect_to article_path(@article)
end
def destroy
@article = Article.find(params[:article_id])
@comment = @article.comments.find(params[:id])
@comment.destroy
redirect_to article_path(@article)
end
private
def comment_params
params.require(:comment).permit(:commenter, :body)
end
end
你有机会在你的 comment_params
方法中混合参数,所以我会在那时进行任何必要的修改。
例如:
params.require(...).permit(...).merge(
commenter_id: current_user.id,
commenter_name: current_user.name
)
对于模型来说,了解控制器的状态是非常的错误形式。