我正在寫一個簡單的博客與身份驗證,我堅持一個小問題 - 我需要評論屬於當前用戶,並顯示他的名字。所以:如何在Ruby on Rails中顯示註釋用戶名?
- 我創建的用戶模型
username:string
- Post.rb
has_many :comments, dependent: :destroy
- User.rb
has_many :comments
- Comment.rb
belongs_to :post belongs_to :user
- 我法師遷移
addUserIdToComments user_id:integer
- 在comments_controller.rb我寫
@comment.user = current_user
- 在我看來,我有
<%= comment.user.username %>
在結果我有一個NameError undefined local variable or method comment for #<#<Class:0xb93859dc>:0xb4b2a2b4>
我已經看了看here,但它並沒有幫助:(
comments_controller.rb
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(comment_params)
@comment.user = current_user
if @comment.save
redirect_to post_path(@post)
else
render 'comments/form'
end
end
private
def comment_params
params.require(:comment).permit(:username, :body)
end
show.html.erb
<div id="post_content">
<h2><%= @post.title %></h2>
<p><%= @post.body %></p>
</div>
<div id="comments">
<h2 class="comments">Комментариев: <%= @post.comments.count %></h2>
<%= render @post.comments %>
<%= render "comments/form" %>
</div>
_comment.html.erb
<div class="comment_content">
<p><%= comment.user.username %></p>
<p><%= comment.body %></p>
<p><%= time_ago_in_words(comment.created_at) %></p>
</div>
_form.html.erb
<div id="comment_form">
<h3 class="form_title">Оставить комментарий</h3>
<p><%= comment.user.username %></p>
<%= form_for ([@post, @post.comments.build]) do |f| %>
<p>
<%= f.label :Комментарий %>
<%= f.text_area :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
</div>
使用你爲什麼打電話'comment'而不是'@ comment'在你的視圖中?你循環了一些@comments變量嗎? –
@KarimMortabit是的,在我的'show.html.erb'我有'<%= render @ post.comments%>' – AlexNikolaev94
顯示控制器和視圖(包括'render'的子視圖)代碼 –