0

新设计。我正在使用部分表单发表评论。我想知道如何将当前用户传递到表单中。这样我就可以用它来显示用户发表了什么评论。我尝试做类似 :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 %>
4

2 回答 2

3

Devise 正在提供视图助手。所以这应该足够了

<%= current_user.name %>
于 2013-05-10T20:47:08.913 回答
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
    ...
于 2013-05-10T20:53:53.030 回答