0

有可能是一个reeeeeally明显的答案,这一个方法,但我不能找到它,那么:的Rails 3 - 如何调用嵌套表格对象

我有有许多time_entries一个timesheets模型,

时间表edit.html.erb:

<%= form_for @timesheet do |f| %> 
. 
. 
. 
    <%= f.fields_for :time_entries do |builder| %> 
      <%= render 'time_entry_fields', :f => builder %> 
    <% end %> 

time_entry_fields局部

经由嵌套形式加入
<%= f.text_field :project %> 
<%= f.text_field :day1_hours %> 
<%= f.text_field :day2_hours %> 
<%= f.text_field :day3_hours %> 
<%= f.text_field :day4_hours %> 
<%= f.text_field :day5_hours %> 
<%= f.text_field :day6_hours %> 
<%= f.text_field :day7_hours %> 

我想定义显示的所有输入的时间总和的方法 - day1_hours + day2_hours + ...等我试图把这个模型:

time_entry.rb

def total_hours 
    d1 = day1_hours || 0 
    d2 = day2_hours || 0 
    d3 = day3_hours || 0 
    d4 = day4_hours || 0 
    d5 = day5_hours || 0 
    d6 = day6_hours || 0 
    d7 = day7_hours || 0 
    d1 + d2 + d3 + d4 + d5 + d6 + d7 
end 

如果我在控制台的TimeEntry对象上调用它,它就可以工作:

1.9.3p0 :003 > TimeEntry.find(3).total_hours 
TimeEntry Load (0.3ms) SELECT "time_entries".* FROM "time_entries" WHERE "time_entries"."id" = $1 LIMIT 1 [["id", 3]] 
=> 8 

但我不知道如何从time_entry_fields部分的形式调用它。我通常可以在控制器中定义@time_entry,以便我可以使用@time_entry.total_hours,但是如何对嵌套窗体中的对象执行此操作?

回答

3

​​在你的部分应该是你想要的

+0

是的!谢谢 :) – ellawren 2012-03-08 22:03:48