首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Articles#show中的ArgumentError

Articles#show中的ArgumentError
EN

Stack Overflow用户
提问于 2013-07-24 22:22:03
回答 2查看 713关注 0票数 0

我正在使用Jumpstartlab博客教程。当我运行服务器并想打开文章时,我得到了以下错误:

代码语言:javascript
复制
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

代码语言:javascript
复制
     <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

代码语言:javascript
复制
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,你有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2013-07-24 22:37:51

该错误消息指出,您在form_for中使用的对象要么为空,要么为空,即您尚未定义它们。由于您还没有发布您的show操作,请尝试添加以下内容(假设您已经设置了articlecomment之间的关系):

代码语言:javascript
复制
# ArticlesController

def show 
  @article = Article.find(params[:id]) # However you are retrieving your @article  
  @comment = @article.comments.build
end 
票数 1
EN

Stack Overflow用户

发布于 2013-07-24 22:25:48

试试这个:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17836767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档