0

皆さんこんにちは。

ビュー内の異なるテーブルから 2 つの列 (amount_ensure と vehicle_Value) を合計しようとしています

TABLES
|POLICIES|
 |id|   |amount_ensure|

|POLICY_VEHICLES| 
 |id|   |policy_id|

|VEHICLES|
 |Id|   |vehicle_value|

これが私のコントローラーです

def view_policy    
   @obj_policy = Policy.find(params[:id])
end

これが私のモデルです

class Policy < ActiveRecord::Base
  has_many :policy_vehicles
  has_many :vehicles, :through => :policy_vehicles
end

class PolicyVehicle < ActiveRecord::Base
  belongs_to :vehicle
  belongs_to :policy
end

class Vehicle < ActiveRecord::Base
  belongs_to :policy
  has_many :policy_vehicles
  has_many :policies, :through => :policy_vehicles
end

私の部分的なビューで @obj_policy.vehicle が空の場合、amount_ensure のみを表示しますが、値がある場合は SUM を実行します (ただし、部分的なビューからの配列です)

<% if @obj_policy.vehicles.empty? %> 
  Sum:
  <%= @obj_policy.amount_ensure %>           
<% else %>
  Sum:
  <%= @obj_policy.amount_ensure + @obj_policy.vehicles.vehicle_value.to_i %>           
<% end %>

<%= render :partial=>"vehicles" %>

私の部分的な見方

<% @obj_policy.vehicles.each do |vehicle| %>
   <%=  vehicle.vehicle_value %>
<% end %>

この問題を解決するにはどうすればよいですか?

助けていただければ幸いです。

4

2 に答える 2

1

これはうまくいくはずです

<% else %>
  Sum:
  <%= @obj_policy.amount_ensure + @obj_policy.vehicles.collect(&:vehicle_value).sum %>           
<% end %>

@obj_policy.vehicles.collect(&:vehicle_value).sumvehicle 配列が空の場合は 0 になります

于 2013-10-16T20:35:29.917 に答える