2011-05-25 44 views
0

我有以下型號:ProjectTask。我使用嵌套屬性如下:具有另一個常量屬性的嵌套屬性

<% form_for @project, :url => consultant_report_path(@project), :html => { :method => :put} do |f| %> 
    <% f.fields_for :tasks do |builder| %> 
    <%= render "due_dates_fields", :f => builder %> 
    <% end %> 
    <p><%= submit_tag %></p> 
<% end %> 

而我有任務類型。

我怎樣才能使這個代碼僅用於type='economical'例如任務?

+0

我真的don'y明白你的問題,但你爲什麼不過濾器TIS部分帶有'if'語句? – apneadiving 2011-05-25 21:08:17

回答

0

嗨,你可以在許多方面做到這一點:

過濾對象:

<% f.fields_for :tasks do |builder| %> 
    <% if builder.object.type == 'economical' %> 
    <%= render "due_dates_fields", :f => builder %> 
    <% end %> 
<% end %> 

指定實例:

<% @project.tasks.each do |task| %> 
    <% if task.type == 'economical' %> 
    <% f.fields_for :tasks, task do |builder| %> 
     <%= render "due_dates_fields", :f => builder %> 
    <% end %> 
    <% end %> 
<% end %> 

或指定的收集使用:

<% f.fields_for :tasks, @economical_taks do |builder| %> 
    <%= render "due_dates_fields", :f => builder %> 
<% end %> 

鋤頭這有幫助,看Fields_for欲瞭解更多信息。

0

你可以說,自定義關係

class Project < ActiveRecord::Base 
    has_many :tasks 
    accepts_nested_attributes_for :tasks 

    has_many :economical_tasks, :class_name => 'Task', 
           :foreign_key => 'project_id', 
           :conditions => ['tasks.type = ?', 'economical'] 
    accepts_nested_attributes_for :economical_tasks 
end 

然後你的表單生成器可以是這樣的:

<% f.fields_for :economical_tasks do |builder| %> 
    <%= render "due_dates_fields", :f => builder %> 
<% end %>