首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >NilClass的未定义方法‘[]=’‘

NilClass的未定义方法‘[]=’‘
EN

Stack Overflow用户
提问于 2013-08-18 00:01:07
回答 3查看 9.9K关注 0票数 2

当我试图提交这个带有嵌套属性的表单时,我一直收到这个未定义的错误,我不知道它是从哪里来的--很长一段时间以来,我一直在与它搏斗,我试图让用户在理事会模型中选择一个选项--提交他们的选择,我不确定我是否正确地连接了我的关联,或者错误来自表单。我是铁轨的菜鸟。提前谢谢。

Error 更新

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Properties::BuildController#update
app/controllers/properties/build_controller.rb, line 21

Started PUT "/properties/5/build/council" for 127.0.0.1 at 2013-08-18 08:52:07 +0100
Processing by Properties::BuildController#update as HTML
  Parameters: {"utf8"=>"✓","authenticity_token"=>"wBWQaxtBioqzGLkhUrstqS+cFD/xvEutXnJ0jWNtSa0=",  "council_id"=>"1", "commit"=>"Save changes", "property_id"=>"5", "id"=>"council"}
  Property Load (0.2ms)  SELECT "properties".* FROM "properties" WHERE "properties"."id" =  ? LIMIT 1  [["id", "5"]]
Completed 500 Internal Server Error in 35ms

NoMethodError - undefined method `[]=' for nil:NilClass:

理事会视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<h1>Select Council</h1>


<%= form_tag  url_for(:action => 'update', :controller =>   'properties/build'), :method  => 'put' do %>

<%= select_tag :council_id, options_from_collection_for_select(Council.all, :id, :name) %>

    <%= submit_tag  %>
<% end %>

控制器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Properties::BuildController < ApplicationController
  include Wicked::Wizard

   steps :tenant, :meter, :council, :confirmed 

  def show
    @property = Property.find(params[:property_id])
    @tenants = @property.tenants.new(params[:tenant_id])
    @meter = @property.build_meter
    @council = @property.build_council
    render_wizard
  end

  def edit
    @property = Property.find(params[:property_id])
  end


  def update
    @property = Property.find(params[:property_id])
    params[:property][:status] = step.to_s
    params[:property][:status] = 'active' if step == steps.last
    @property.update_attributes(params[:property])
    render_wizard @property
  end

end

Council.rb

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Council < ActiveRecord::Base
  attr_accessible :CouncilEmail, :name, :CouncilTel

  belongs_to :property
end

更新 Propery.rb

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Property < ActiveRecord::Base
  attr_accessible  :name, :address_attributes, :tenants_attributes, :meter_attributes, :council_attributes, :property_id, :status
  belongs_to :user 


  has_one :address, :as => :addressable
  accepts_nested_attributes_for :address, :allow_destroy => true


  has_one :council
  accepts_nested_attributes_for :council, :allow_destroy => true

  has_many :tenants, :inverse_of => :property
  accepts_nested_attributes_for :tenants, :allow_destroy => true, :reject_if     => :all_blank

  has_one :meter
  accepts_nested_attributes_for :meter, :allow_destroy => true


  validates :name,      :presence => :true
  validates :address,   :presence => :true
  validates :tenants,   :presence => true, :if => :active_or_tenants?
  validates :council,   :presence => true, :if => :active_or_council?


  def active?
    status == 'active'
  end

  def active_or_tenants?
    (status || '').include?('tenants') || active?
  end

  def active_or_council?
    (status || '').include?('council') || active?
  end
end
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-18 00:44:00

我想这是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
params[:property]

nil。所以Ruby在做时会抱怨

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
params[:property][:status] = 'foo'

你可能想做这样的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if params[:property]
  params[:property][:status] = 'foo'
end

但是,在您的示例中,问题在于您使用的是form_tag而不是form_for,因此没有为params[:property]定义。

票数 5
EN

Stack Overflow用户

发布于 2017-04-04 05:13:14

现在在ruby散列中检查嵌套属性的更好方法是使用dig

示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
params.dig(:property, :status)

如果未定义密钥,则返回零。

票数 4
EN

Stack Overflow用户

发布于 2021-05-15 13:55:21

如果使用数据文件,请确保data.yml中没有偏离的data.yml请参阅此GitHub注释

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18296970

复制
相关文章
Java-方法重载时 调用未定义的对象属性
public class TestWayReload { int id; String name; String pwd; public TestWayReload(){ System.out.println(“Hellow World!”); System.out.println("################"); }
Fisherman渔夫
2019/07/30
5.6K0
Array find方法在UC浏览器未定义
今天发现用UC浏览器访问一个项目出现bug,后来检查出来原来UC浏览器并没有find方法(但它有filter方法),所以写了以下垫片。。。
javascript.shop
2019/09/04
2.7K0
ThinkPHP报错“未定义数组索引”原因与解决方法
但是,大家有必要知道:thinkphp这个文件夹是框架的核心目录,一般我们是没必要修改的。要是框架核心文件报错,有可能是PHP版本的问题。
阿哲
2022/03/13
7.3K0
C/C++未定义行为
下面是一段代码,这段代码中有标准未定义的行为。代码如下: #include<iostream> using namespace std; int main() { int j = 0;
zy010101
2020/04/16
3.7K0
SharePoint 2010 在WebPart页面上调用扩展方法报方法未定义的解决方案
SharePoint 2010是基于.NET 3.5的,但是微软一直是神坑,页面前台居然不支持扩展方法,也就是你可以在后台代码里面使用扩展方法,但是不能在前台页面 上逍遥,否则会打回原型,比如在WebPart页面上加入如下代码:
雪雁-心莱科技
2018/12/27
1.2K0
brew报错:`initialize': Version value must be a string; got a NilClass () (TypeError)
在macOS 11.0 Beta版 中 brew运行任何命令都会报错,原因是 brew 只支持正式发行版。
小贝壳
2020/08/19
8.6K2
ubuntu gcc编译时对’xxxx’未定义的引用问题
http://www.cnblogs.com/oloroso/p/4688426.html
bear_fish
2018/09/19
8.2K0
[Error] invalid use of incomplete type 使用了未定义的类型
今天在写奥特曼打大怪兽的时候,发现一个奇怪的问题,我定义了两个基类Ultraman和Monster,一个Monster的子类Boss,然后两个基类是有相互勾结的地方,它们都或多或少的使用了对方的类型进行定义自己,然后我在第一个类实现前面进行了另一个类的声明:
叶茂林
2023/07/30
5130
[Error] invalid use of incomplete type 使用了未定义的类型
C 和 C++ 中的未定义行为
theme: channing-cyan highlight: a11y-dark
鲸落c
2022/11/14
4.4K0
Oracle中日期字段未定义日期类型的案例一则
可能很多开发规范中都写了日期类型的字段,应该就是用标准的日期类型定义,不要用字符串、数值型等替代,相关历史文章,如下所示,
bisal
2022/05/14
3.4K0
解决调用未定义 swoole_async_readfile函数问题
https://github.com/swoole/swoole-src/issues/2439
全栈程序员站长
2022/07/11
4K0
解决调用未定义 swoole_async_readfile函数问题
实现nest中未定义参数的入参校验
当我们在dto层定义好参数字段后,客户端在调用时传入了未定义的字段,此时我们需要报错告知客户端这个字段不存在,在nest中默认不会报错,本文将分享这个问题的解决方案,欢迎各位感兴趣的开发者阅读本文。
神奇的程序员
2022/04/10
3.5K0
实现nest中未定义参数的入参校验
c++使用了未定义类型_c++如何新建
第一个参数是一个指向SECURITY_ATTRIBUTES结构体的指针,一般的情况下,可以是nullptr。
全栈程序员站长
2022/11/09
2.7K0
IE11出现"__doPostBack”未定义
  系统做迁移,在新服务器IIS上部署,部署后的系统在IE8和其他浏览器上显示正常,
_一级菜鸟
2020/07/22
2.6K0
优雅地创建未定义类PHP对象
在PHP中,如果没有事先准备好类,需要创建一个未定义类的对象,我们可以采用下面三种方式:
硬核项目经理
2019/11/21
2.8K0
「我读」PL 观点 | 未定义行为有利的一面
Rust 官方团队 Ralf Jung 在 PL 观点 (PL Perspectives) 博客[1] 上发表了一篇文章 《Undefined Behavior deserves a better reputation》[2] ,文中对UB(未定义行为)有利的一面进行了详细的阐述。通过这篇文章,我们可以对UB 有更深入的理解。
张汉东
2021/11/25
1.7K0
Oracle中日期字段未定义日期类型的案例补充说明
《Oracle中日期字段未定义日期类型的案例一则》讲到一个用字符串类型的日期字段做分区键的案例,因为这种"不规范"的设计,通过增加一个虚拟列,才实现的日期分区的功能。
bisal
2022/05/19
1.8K0
Oracle中日期字段未定义日期类型的案例补充说明
《Oracle中日期字段未定义日期类型的案例一则》讲到一个用字符串类型的日期字段做分区键的案例,因为这种"不规范"的设计,通过增加一个虚拟列,才实现的日期分区的功能。
bisal
2022/05/18
1.8K0
Oracle中日期字段未定义日期类型的案例一则
可能很多开发规范中都写了日期类型的字段,应该就是用标准的日期类型定义,不要用字符串、数值型等替代,相关历史文章,如下所示,
bisal
2022/05/14
1.5K0
点击加载更多

相似问题

“NilClass”的未定义方法“NilClass”

23

NilClass的未定义方法“NilClass”

22

“NilClass”的未定义方法

124

NilClass的未定义方法

11

NoMethodError:#<NoMethodError的未定义方法‘`result’:nil:NilClass>的未定义方法‘nil:NilClass>’

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文