使用Devise gem,如何显示带注释的用户名?

时间:2013-05-10 20:36:27

标签: ruby-on-rails devise comments

设计新手。我正在使用部分表单发表评论。我想知道如何将当前用户传递到表单中。这样我就可以用它来显示用户发布了什么评论。我试过做类似的事情:current_user => current_user.name但是获取未定义的局部变量,因为范围内没有用户的实例。有什么建议吗?

<%= form_for Comment.new(:party_id => party.id), :remote => :true do |f| %>
            <div class="field">
                <%= f.hidden_field :party_id %>
            </div>

            <div class="field">
                <%= f.text_area :body %>
            </div>

            <div class="field">
                <%= f.submit %>
            </div>
<% end %>

2 个答案:

答案 0 :(得分:3)

Devise正在提供view helpers。所以这应该足够了

<%= current_user.name %>

答案 1 :(得分:1)

即使您将其添加为隐藏字段,如果用户检查html代码,用户仍然可以更改他们使用表单发送的值。您应该在控制器操作中执行此操作。我还认为使用关联而不仅仅是名称会更好。

# in Comment model
class Comment < ActiveRecord::Base
  belongs_to :user
  ...

# in User model
class User < ActiveRecord::Base
  has_many :comments
  ...

# in CommentsController 
def create
  @comment = current_user.comments.build(params[:comment]) # current_user is a devise helper method
  if @comment.save
    ...