我的Rails应用程序遇到了一些麻烦。我有一些视频教程,我想让用户写一些评论。我创建了3个模型:comment.rb,user.rb和tutorial.rb。教程有很多评论,属于用户;评论属于教程和用户;用户有很多评论和很多教程。我在tutorial_controller中有创建动作,它可以工作。创建教程后,将呈现带有comment_form的视图。此时,用户可以在他提交我在comments_controller中遇到创建操作问题时写下他的评论。 消息错误是
CommentsController中的NoMethodError #create
未定义的方法`评论'为nil:NilClass
为什么'评论'未定义?当然没有创建评论。 现在有些代码...
评论模型:
class Comment < ActiveRecord::Base
#content may be tutorial, post etc. Body is the real content of the comment
attr_accessible :writer, :content, :body
belongs_to :user
belongs_to :tutorial
end
在评论控制器中创建操作:
def create
@comment = Comment.new
@comment = @tutorial.comments.build(params[:comment])
if @comment.save
flash[:success] = 'Your comment was successfully added!'
render 'tutorials/show'
else
render 'tutorials/show'
end
end
评论表:
<%= form_for(@tutorial.comments.build(params[:id])) do |f| %>
<div class="form-group">
<%= f.label :body %>
<%= f.text_area :body, class: 'form-control', required: true %>
</div>
<%= f.submit class: 'btn btn-primary' %>
<% end %>
在教程控制器中显示操作:
def show
#shows the page of the single tutorial
@tutorial = Tutorial.find(params[:id])
current_tutorial = @tutorial
end
谢谢!