【问题标题】:NoMethodError in RevisionsController#new /undefined method `[]' for nil:NilClassNoMethodError in RevisionsController#new /undefined method `[]' for nil:NilClass
【发布时间】:2012-08-08 18:02:06
【问题描述】:

我正在尝试使用 rails 3 创建一个 WIKI 页面。我正在关注http://garrickvanburen.com/archive/how-to-build-a-wiki-with-ruby-on-rails-part-1/ 的教程

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

RevisionsController 中的 NoMethodError#new

nil:NilClass 的未定义方法 `[]'

Rails.root:/home/whitey7/wiki 应用程序跟踪 |框架跟踪 |全程跟踪

app/controllers/revisions_controller.rb:30:in `new'

当我打开 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

【问题讨论】:

  • 你指的是这样的东西吗? people.create(params[:person]) 下面 Person.find_or_create_by_name(params[:person][:name]).id)

标签: ruby-on-rails ruby


【解决方案1】:

params[:person] 未设置。如果您只是想避免这种情况下的错误,请更改为:

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

【讨论】:

  • 我在下面的 Revision.new 中添加了 params[:person],但它似乎不正确,或者我在正确的位置设置它。
  • 您是否知道在代码中设置 params[:persons] 的正确位置是?感谢您的上述回复,如果我无法弄清楚,我会尝试。
  • params[:person] 未在您的代码中设置。如果您熟悉 PHP,它相当于 $_POST['person']。在获取请求中,参数由基于您的 routes.rb 文件的 url 定义。在发布请求中,它来自页面上的输入标签。至于教程试图做什么,我不知道。它不应该在你的新方法中设置。
  • 感谢您的信息!我会四处挖掘,看看我能找到什么。
猜你喜欢
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 2022-11-18
  • 2015-01-29
  • 1970-01-01
  • 2015-03-19
  • 2016-08-13
相关资源
最近更新 更多