2011-07-14 23 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 :name, check_list.tasks[count].name %> 
     <%= task.text_field :name %> 
    </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 :completed, check_list.tasks[count].name %> 
     <%= task.check_box :completed %> 
    </li> 
    <% count += 1 %> 
    <% end %> 
    </ol> 
    <p><%= f.submit 'Update' %></p> 
<% end %> 

動作しない、とcheck_listは私が渡している変数である

編集: H

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のはおそらくアクションに渡されるすべてのフィールドを更新して、フォーム上の隠しフィールドとして名を追加することをお勧めしたい:EREは私のモデルのソースです。

<%= 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

関連する問題