2012-08-11 51 views
0

我想用Rails创建3.我下面的教程维基页面通过http://garrickvanburen.com/archive/how-to-build-a-wiki-with-ruby-on-rails-part-1/NoMethodError在RevisionsController#新/未定义的方法`[]”的零:NilClass

我相信他的教程是轨道2所以我不得不改变编码。我在第6节输入了app/views/revisions/new.html.erb中的编码。一旦我在localhost/revisions/new中加载服务器,我得到以下错误 -

RevisionsController#new

中的NoMethodError

未定义的方法`[]”的零:NilClass

Rails.root:/家庭/ whitey7 /维基 应用程序跟踪|框架跟踪|全面跟踪

应用程序/控制器/ revisions_controller.rb:30:在`新”

当我拉起revisions_controller文件和视图行30似乎正确,或根据什么在本教程正确。其他一切似乎都很好,但是这个。我似乎无法找到答案或如何解决这个问题。任何帮助或一些指导将不胜感激。代码低于revisions_controller文件中列出的代码。谢谢大家!

# GET /revisions/new 
    # GET /revisions/new.json 


def new 
    @revision = Revision.new 

    @revision.update_attribute('person_id', 
     Person.find_or_create_by_name(params[:person][:name]).id) **#Inputed from Tutorial.** 

    respond_to do |format| 
     format.html # new.html.erb 
     format.json { render json: @revision } 
    end 
    end 
+0

你是指这样的事情? people.create(params [:person])在Person.find_or_create_by_name(params [:person] [:name])下。id) – Awhitey98 2012-08-12 01:00:57

回答

1

params [:person]没有设置。如果你只是想避免在这种情况下的错误,改为:

unless params[:person].nil? 
    @revision.update_attribute('person_id', 
    Person.find_or_create_by_name(params[:person][:name]).id) 
end 
+0

我在下面的Revision.new中添加了params [:person],但它看起来不正确或就像我在正确的位置设置它。 – Awhitey98 2012-08-12 01:50:59

+0

你偶然知道是否是在代码中设置params [:persons]的正确位置是?感谢上述回应,如果我无法弄清楚,我会尝试。 – Awhitey98 2012-08-12 01:55:19

+1

params [:person]没有在您的代码中设置。如果您熟悉PHP,则相当于$ _POST ['person']。在获取请求时,params由基于您的routes.rb文件的url定义。在帖子请求中,它来自页面上的输入标签。至于教程试图做什么,我不知道。它不应该在你的新方法中设置。 – sgrif 2012-08-12 01:59:05

相关问题