2014-02-02 4 views
0

Я только разрешаю подписываемым пользователям оставлять комментарии, но при публикации комментария, как мне заставить его сказать, что подписанный в настоящее время пользователь опубликовал его?Как связать пользователя с комментарием?

Мои комментарии создать внешний вид, как этот

def create 
    @post = Post.find(params[:post_id]) 
    @comment = @post.comments.create(params[:comment]) 
     redirect_to post_path(@post) 
end 

И это форма комментариев

<div class="container"> 
    <% if signed_in? %> 
<%= form_for([@post, @post.comments.build]) do |f| %> 

    <p> 
     <%= f.label :username %> 
     <%= f.text_field :commenter %> 
    </p> 
    <p> 
     <%= f.label :comment %> 
     <%= f.text_area :body %> 
    </p> 
    <p> 
     <%= f.submit "Submit Comment" %> 
    </p> 
<% end %> 
<% else %> 
<p> <em>You must be signed in to comment</em> </p> 
<% end %> 
</div> 

И это то, что комментарии выглядеть после нее

<h5><em> 
     <%= comment.commenter %> posted 
     <% if comment.created_at > Time.now.beginning_of_day %> 
     <%="#{time_ago_in_words(comment.created_at)} ago"%> 
     <% else %> 
     <%= comment.created_at.strftime("%b %d, %Y") %> 
     <% end %> 

    </em></h5> 

    <p> 
     <%= link_to 'Destroy Comment', [comment.post, comment], 
     method: :delete, data: {confirm: 'Are you sure?'} %> 
    </p> 

Я не полностью уверен, как заставить его помнить, что current_user отправил его. Должен ли я связывать свои комментарии не только с сообщениями, но и с пользователями?

ответ

0

Вы можете сделать это в любом из двух мест. В вашей форме, когда вы делаете post.comments.build, вы можете передать текущему пользователю плакат: post.comments.build(commenter: current_user). Или вы можете поместить его в действие create, например:

@comment = @post.comments.build(params[:comment]) 
@comment.commenter = current_user 
@comment.save 
Смежные вопросы