[英]ArgumentError in Articles#show
我正在使用Jumpstartlab博客教程。 当我运行服务器并且想要打开文章时,出现以下错误:
ArgumentError in Articles#show
Showing /home/darek/rails_projects/blogger/app/views/comments/_form.html.erb where line
#3 raised:
First argument in form cannot contain nil or be empty
Extracted source (around line #3):
1 <h3>Post a Comment</h3>
2
3 <% form_for [ @article, @comment ] do |f| %>
4 <p>
5 <%= f.label :author_name %><br/>
6 <%= f.text_field :author_name %>
_form.html.erb
<h3>Post a Comment</h3>
<% form_for [ @article, @comment ] do |f| %>
<p>
<%= f.label :author_name %><br/>
<%= f.text_field :author_name %>
</p>
<p>
<% f.label :body %><br/>
<% f.text_area :body %>
</p>
<p>
<%= f.submit 'Submit' %>
</p>
<% end %>
comments_controller.rb
class CommentsController < ApplicationController
def create
article_id = params[:comment].delete(:article_id)
@comment = Comment.new(params[:comment])
@comment.article_id = article_id
@comment.save
redirect_to article_path(@comment.article)
end
end
我试图将代码与本教程的github存储库进行比较,但没有帮助。 该教程是为Rails 3.x准备的,而我正在使用4.0。
该错误消息表明您在form_for
使用的对象为nil或为空,即您尚未定义它们。 由于您尚未发布show
动作,请尝试添加以下内容(假设您已经设置了article
和comment
之间的关系):
# ArticlesController
def show
@article = Article.find(params[:id]) # However you are retrieving your @article
@comment = @article.comments.build
end
试试这个:
def create
article_id = params[:comment].delete(:article_id)
@article = Article.find(article_id)
@comment = @article.comments.build(params[:comment])
@comment.save
redirect_to article_path(@comment.article)
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.