私はObjectiveモデルと多対多の関係で結合されたTaskモデルを持っています。Railsフォーム - チェックボックスがチェックされていない場合、POSTにparamは含まれていません
私は、ユーザーが任意の目標とタスクをチェックボックスで関連付けることができるタスク編集フォームを持っています。チェックボックスをオンにすると、タスクと特定の目的との関連性が示されます。チェックボックスがチェックされていない場合、関連がないはずです。これは、フォームが送信されるときにデータベースに保持される必要があります。タスクの更新
<%= form_for @task do |f| %>
<% Objective.all.each do |objective| %>
<%= check_box_tag :objective_ids, objective.id, @task.objectives.include?(objective), :name => 'task[objective_ids][]' %>
<% end %>
<%= f.button :submit %>
<% end %>
限り1つのチェックボックスは、ユーザーによってチェックされているが、ユーザが任意のチェックボックスをチェックしていない場合、(客観IDの配列である):objective_ids
のparamとして絶対に罰金を動作するようですPOSTアクションにはまったく含まれていません。このため、コントローラー内で@task.update_attributes(params[:task])
を実行すると、タスクのオブジェクトのコレクションは更新されません(チェックボックスがチェックされていないため、タスクに関連付けられた目的がなくなります)。
したがって、空の配列としてのみ、:objective_ids
のパラメータがPOSTに含まれていることを確認するにはどうすればよいですか?
ありがとうございました。魅力を発揮します。 –
もう1つの解決策はこちらです:http://asciicasts.com/episodes/17-habtm-checkboxes –
@Jignesh、それは私の答えです; – cutalion