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