尝试将条件放入数组时出错

时间:2013-11-06 17:03:24

标签: ruby-on-rails ruby ruby-on-rails-2

我正在使用ruby 1.8.7

大家好我想把一个条件放在一个数组中,但是我收到了一个错误。 我想要

   if policy.date_ini >= insurance.initial_date then
      do sum of all net_ensurance where date_ini >= initial_date
   else
      show the last insurance
   end

   |policies|
     |id|   |date_ini|  |num_policy|
      1      2013-02-30      1234

   |insurances|
     |id|  |policy_id|   |initial_date|   |net_ensurance|
      1       1            2013-03-30         1000
      2       1            2013-02-30         2000 
      3       1            2012-12-05         5000

我应该

      |num_policy|  |sum_net_ensurance|
        1234                 3000

这是我的控制器

@policies = Policy.find(:all)

这是我的模特

class Policy < ActiveRecord::Base
  has_many :insurances
end

class Insurance < ActiveRecord::Base
  belongs_to :policy
end

这是我的观点

      <% @policies.each do |policy| %>

           <%= policy.num_policy %>

           <% if policy.date_ini >= policy.insurances.initial_date %>
              <%= policy.insurances.sum(:net_insurance)  %>
           <% else %>
              <% policy.insurances.last(1).each do |insurance| %>          
                <%= insurance.net_insurance %>
              <% end %>
           <% end  %>

      <% end  %>

我得到了这个错误

undefined method `initial_date' for #<Class:0x7f30aa1ea398>

我也试过

           <% if policy.date_ini >= policy.insurances.try(:initial_date) %>
              <%= policy.insurances.sum(:net_insurance)  %>
           <% else %>
              <% policy.insurances.last(1).each do |insurance| %>          
                <%= insurance.net_insurance %>
              <% end %>
           <% end  %>

请有人可以帮助我吗?

我真的很感激帮助

2 个答案:

答案 0 :(得分:1)

初始错误:

undefined method `initial_date' for #<Class:0x7f30aa1ea398>

可能是因为您在initial_date(这是一个数组)上调用了insurances

您想要做的是选择您想要使用的特定保险。所以它会是这样的:

policy.insurances.first.initial_date

policy.insurances.last.initial_date

答案 1 :(得分:0)

policy.insurances代码问题。你正在处理关系。 你需要使用真正的保险对象并进行比较。 例如 policy.insurances.first