在Rails中发布评论时显示用户名

时间:2013-08-25 23:33:39

标签: ruby-on-rails ruby-on-rails-3

当用户发布名为Pins的专辑评论时,我有一个应用。我为其他用户创建了一个评论模型,以评论评论。我正在努力让评论说“发布者”,然后显示发布者的姓名。以下是一些代码:

引脚模型has_many :comments 用户模型has_many :comments 评论模型belongs_to :pin                    belongs_to :user

这是评论控制器:

def create
@pin = Pin.find(params[:pin_id])
@comment = @pin.comments.create(params[:comment])
@comment.username = current_user

respond_to do |format|
  if @comment.save
    format.html { redirect_to @pin, notice: 'Comment was successfully created.' }
    format.json { render json: @comment, status: :created, location: @comment }
  else
    format.html { render action: "new" }
    format.json { render json: @comment.errors, status: :unprocessable_entity }
  end
end

这是现在的应用程序: http://powerful-reaches-7038.herokuapp.com

我已尝试在Stack Overflow上发布的其他一些答案,但没有骰子。我想说的是:

<strong>Posted <%= time_ago_in_words(comment.created_at) %> ago by <%= comment.user.name %></strong>

2 个答案:

答案 0 :(得分:2)

您正在为User的用户名字段分配Comment个实例。我假设username属性是数据库中的字符串。因此,如果您希望该名称出现在注释中,则需要为其指定当前用户的名称。

所以:

@comment.username = current_user.name

如果您已经在CommentUser之间建立关联,那么您可以这样做:

@comment.user = current_user

<%= @comment.user.name %>

答案 1 :(得分:0)

您可以在

中保存用户名
@comment.username = current_user

并显示:

<%= comment.user.name %>

但必须是

<%= comment.username %>