2012-01-09 6 views
0

私はこれであなたの助けをいただければ幸いです削除されません:、私は次のようfield_forを持っている私の形でreject_ifが空ですか?働いていない - フィールドが空の場合、テーブルの行が

class Author < ActiveRecord::Base 
    has_one :authornote, :foreign_key => "author_fk", :dependent => :destroy 
    accepts_nested_attributes_for :authornote, :reject_if => lambda { |a| a[:note_value].blank? }, :allow_destroy => true 
end 

class Authornote < ActiveRecord::Base 
    belongs_to :author, :foreign_key => :author_fk 
end 

私は2つのモデルを持っている

<% remote_form_for @author, :url => { :controller => "authors", :action => "update_author_note" } do |f| %> 
    <div> 
     <% f.fields_for :authornote do |builder| %> 
      <%= builder.text_area :note_value, :rows => 4, :cols => 50 %> 
     <% end %> 
    </div> 
    <%= f.submit 'Update' %> 
<%end%> 

コントローラーコード:

def update_author_note 
    author_id = session[:author_id] 
    @author = Author.find(author_id) 

    if @author.update_attributes(params[:author]) 
    respond_to do |format| 
     format.js 
    end 
    else 
    respond_to do |format| 
     format.html { redirect_to add_author_note_path(:sub_id=> session[:sub_id]) } 
    end 
    end 

end 

現在、ユーザーがフォームフィールド 'note_value'のすべての内容を削除してフォームを更新すると、データ行は 'authornote'テーブルに存在し、 'note_value'列は空です。

フィールド 'note_value'が空で、ユーザーが更新ボタンをクリックすると、空の列 'note_value'の行が 'authornote'テーブルで削除されます。

任意の提案は、ほとんどあなたがそれをやろうとしているとして、何をしようとしていることはRailsのではサポートされていない

答えて

3

を高く評価しています。 でレコードを削除するには、削除するレコードのIDとともに_delete: trueを渡す必要があります。 note_valueを持たないネストされたレコードを拒否すると、それらのレコードを更新しようとしていることをRailsに知らせることはできません—それらは完全にパラメータから失われています。

+0

清算に感謝します。 – tanya

関連する問題