在控制台中有价值,但在我的控制器和我的视图中它是零?

时间:2012-12-26 00:22:12

标签: 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-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">] 

如您所见,我的用户有一条记录:10。

如果我尝试在控制器中获取相同的信息,我不会有任何例外,但

@user.payment.last.active_until

为空,视图中相同。

例如,如果我在我看来尝试这个:

<%= @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:用户可能有很多付款,但我只需要最后一笔付款。

1 个答案:

答案 0 :(得分:2)

它与你的控制台不一样。在控制台中,您将获得一条记录,但在视图中,您将获得两条记录 - 您在控制台中看到的记录,以及另一条记录。

我猜这个空白的是您用于创建新form记录的表单的Payment标记帮助程序,但这也是{{1返回。要么先拿一个,要么在调用last之前过滤保存的记录。