2011-07-14 90 views
0

在我的Rails應用程序中,我的顯示操作中嵌套了form_for。此表單與編輯操作中的表單相同,但它有不同的字段。Rails更新操作不會更新布爾字段

Category -> Task -> completed (boolean, check_box)是我想要更新,但它沒有。雖然,如果我做Category -> Task -> name (string, text_field)它更新正常。

這不起作用

<%= form_for check_list do |f| %> 
    <%= f.error_messages %> 
    <% count = 0 %> 
    <ol> 
    <%= f.fields_for :tasks do |task| %> 
    <li> 
     <%= task.label :completed, check_list.tasks[count].name %> 
     <%= task.check_box :completed %> 
    </li> 
    <% count += 1 %> 
    <% end %> 
    </ol> 
    <p><%= f.submit 'Update' %></p> 
<% end %> 

這工作

<%= form_for check_list do |f| %> 
    <%= f.error_messages %> 
    <% count = 0 %> 
    <ol> 
    <%= f.fields_for :tasks do |task| %> 
    <li> 
     <%= task.label :name, check_list.tasks[count].name %> 
     <%= task.text_field :name %> 
    </li> 
    <% count += 1 %> 
    <% end %> 
    </ol> 
    <p><%= f.submit 'Update' %></p> 
<% end %> 

這是一個部分,並且check_list是一個變量,我路過

編輯: H ERE是我的模型來源:

class CheckList < ActiveRecord::Base 
    has_many :tasks, :dependent => :destroy 
    accepts_nested_attributes_for :tasks, :reject_if => lambda { |a| a[:name].blank? }, :allow_destroy => true 

    # Validations 
    validates :name, :presence => true 

end 

class Task < ActiveRecord::Base 
    belongs_to :check_list 
end 
+0

您可以粘貼模型的源代碼嗎? – Dogbert

+0

如果你刪除':reject_if'條件,它會起作用嗎? – Dogbert

+0

是的,它在我刪除':reject_if'時起作用。 – LanguagesNamedAfterCofee

回答

3

我建議將名稱作爲窗體上的隱藏字段,如Rails的更新可能被傳遞到行動的所有字段。

<%= form_for check_list do |f| %> 
    <%= f.error_messages %> 
    <% count = 0 %> 
    <ol> 
    <%= f.fields_for :tasks do |task| %> 
    <li> 
     <%= task.label :completed, check_list.tasks[count].name %> 
     <%= task.check_box :completed %> 
     <%= task.hidden_field :name %> 
    </li> 
    <% count += 1 %> 
    <% end %> 
    </ol> 
    <p><%= f.submit 'Update' %></p> 
<% end %> 
    <% end %> 
    </ol> 
    <p><%= f.submit 'Update' %></p> 
<% end %> 
+0

謝謝,這解決了問題! – LanguagesNamedAfterCofee