Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 同一对象的异常调试输出中的Rails差异_Ruby On Rails 3_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 3 同一对象的异常调试输出中的Rails差异

Ruby on rails 3 同一对象的异常调试输出中的Rails差异,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails 3,Ruby On Rails 3.2,我的应用程序中有一个用户模型和一个列表模型 pages\u controller.rb class PagesController < ApplicationController def home if user_signed_in? @lists = current_user.lists # raise @lists.inspect @new_list = current_user.lists.build end end end class

我的应用程序中有一个用户模型和一个列表模型

pages\u controller.rb

class PagesController < ApplicationController

 def home
  if user_signed_in?
   @lists = current_user.lists    
   # raise @lists.inspect 
   @new_list = current_user.lists.build
  end
 end

end 
class PagesController
pages/home.html.erb

<%= raise @lists.inspect %>

现在,我的当前用户没有与他相关联的列表。 当我取消“Pages#home”raise@lists.inspect中第三行的注释时,我得到如下输出:[]

[] 但是,当我注释这一行时,home.html.erb中的异常被引发,其输出如下:
[#]

为什么同一
@列表的输出有差异。检查


编辑:当我使用
@lists=current_user.lists.all
而不是
@lists=current_user.lists
时,我在两个位置都得到一个空数组。为什么这两种代码在行为上存在差异

因为您在第一次
提升后在控制器中生成
列表

@new_list = current_user.lists.build

代码是相同的,但数据是不同的,因为你对它做了些什么。

Ah..就是这样。当我删除这个
@new\u list=current\u user.lists.build
时,它显示了相同的输出。但是空数组已经被分配给@lists,那么为什么下一行会有什么不同呢?我很困惑,当我使用
@lists=current\u user.lists.all
时,两种情况下的输出都是
[]
。那么,为什么会有区别呢?@Inreddy因为没有成员的关联和只有一个默认成员的关联是有区别的,这是在没有参数的情况下构建时创建的。我很抱歉在这里过于密集,但我的意思是,如果我将行
@lists=current\u user.lists
替换为
@lists=current\u user.lists.all
,那么在这两个位置都会得到一个空数组。那么为什么
@lists=current\u user.lists.all
的行为会有所不同呢?
@new_list = current_user.lists.build