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 在控制台中有值,但它';在我的控制器和视图中为零?_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 在控制台中有值,但它';在我的控制器和视图中为零?

Ruby on rails 在控制台中有值,但它';在我的控制器和视图中为零?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,我有这种奇怪的行为,我不明白为什么。事情是这样的: 我的付款模式中有以下记录: 1.9.3p286 :019 > u.payment.last Payment Load (0.3ms) SELECT "payments".* FROM "payments" WHERE "payments"."user_id" = 10 => [#<Payment id: 37, bank_name: "Mercantil", plan: "Plan Uno", date: "2012-

我有这种奇怪的行为,我不明白为什么。事情是这样的:

我的付款模式中有以下记录:

1.9.3p286 :019 > u.payment.last
  Payment Load (0.3ms)  SELECT "payments".* FROM "payments" WHERE "payments"."user_id" = 10
 => [#<Payment id: 37, bank_name: "Mercantil", plan: "Plan Uno", date: "2012-12-25", reference_number: "3452435", coupon: "", user_id: 10, created_at: "2012-12-25 21:56:12", updated_at: "2012-12-25 21:58:31", active_until: "2013-01-24">] 
为空,在视图中相同

例如,如果我在我的视图中尝试此操作:

<%= @user.payment.last.active_until %>

我什么也没得到,是空白的

如果我试试这个

<%= @user.payment %>

我得到了和我的控制台一样的东西

[#<Payment id: 37, bank_name: "Mercantil", plan: "Plan Uno", date: "2012-12-25", reference_number: "3452435", coupon: "", user_id: 10, created_at: "2012-12-25 21:56:12", updated_at: "2012-12-25 21:58:31", active_until: "2013-01-24">, #<Payment id: nil, bank_name: nil, plan: nil, date: nil, reference_number: nil, coupon: nil, user_id: 10, created_at: nil, updated_at: nil, active_until: nil>]
[#,#]
我真的不明白这里发生了什么。请帮忙

提前谢谢


PD:用户可以有很多付款,但我只需要最后一笔。

这与您的控制台不同。在控制台中有一条记录,但在视图中有两条——控制台中看到的记录和另一条空白记录


< P> >我猜,空白代码是您使用的“<代码>表单< /代码>标签助手),用于创建新的<代码>付款>代码>记录,但这也是<>代码>最后<代码>返回的一个。在调用
last

之前,请选择last之前的一个,或者筛选保存的记录。为什么您有一个单数关联(
payment
),返回多个对象?对不起,Gareth,您的意思是@user.payment???是的,为什么您用单数调用您的关联
payment
,如果可以有很多呢?标准惯例是说“
有很多:付款
”,这样您就可以编写“
@user.payments
”(更具描述性)好吧,我使用这个脚手架轨道生成脚手架付款,脚手架创建模型“Payment”就可以了。如果您在
用户
模型中编写
有许多:payments
,Rails知道您指的是
支付
模型,因为它知道如何使用单词
payments
并再次将其单数化-
@User.Payment
数组包含两个条目。第一个是您的记录-id为37的记录-另一个记录的所有字段(包括id)均为
nil
,除了
user\u id
。这是一个未保存的记录-它不在数据库中,您将无法使用
支付获取它。所有
-它是由
@user.Payment.create
@user.Payment.build
创建的,在保存它之前-它只存在于
@user.Payment
中。对,但您的输出有两个
支付
对象。你必须在你的控制器中创建一个,哦,我明白了,但是我不知道如何从上一个有信息的地方获取信息。你能帮我吗?这是一个选择。您也可以使用类似于
@user.payment.select{| e | e.id}.last
,或者在创建新记录之前只获取控制器中的最后一条记录。我是否创建了before|create方法,但仍然获取空记录
[#<Payment id: 37, bank_name: "Mercantil", plan: "Plan Uno", date: "2012-12-25", reference_number: "3452435", coupon: "", user_id: 10, created_at: "2012-12-25 21:56:12", updated_at: "2012-12-25 21:58:31", active_until: "2013-01-24">, #<Payment id: nil, bank_name: nil, plan: nil, date: nil, reference_number: nil, coupon: nil, user_id: 10, created_at: nil, updated_at: nil, active_until: nil>]