どのように私は1つのRuby on Railsのフォームで複数のレコードを編集するには?
-
12-09-2019 - |
質問
私はRubyはRailsの上で、しかし、私が問題に遭遇してきた自分自身を教えるための簡単なto-doリストのアプリケーションを作ってるんです。
:私はそうのように、それらの左にあるチェックボックスでのto-do項目を一覧表示し、簡単なフォーム、および下部にある「更新」ボタンを持っています []食器を行い
[]ごみ
を取り出し
[]世界を引き継ぐ
(更新)
それぞれに-Do項目は、「完了」ブールフィールドで、データベース内の別のレコードです。私は、フォームが、私はビューからそれらを非表示になりますこれ、trueに各項目の「完了」フィールドを設定することが可能なアクションにチェックをオフアイテムIDのリストを提出したい。
私は複数のモデルを参照する形ではなく、同じモデルの複数のレコードを参照するものを作る方法を知っています。任意のヒント?
ありがとうございます。
解決
Railscastsはあなたの友達です!
http://railscasts.com/episodes/52-update-through-checkboxes >
それは本当に簡単です。
# routes.rb
map.resources :tasks, :collection => { :complete => :put }
# tasks_controller.rb
def complete
Task.update_all(["completed_at=?", Time.now], :id => params[:task_ids])
end
# views\tasks\complete.html.erb
<% form_tag complete_tasks_path, :method => :put do %>
<ul>
<% for task in @incomplete_tasks %>
<li>
<%= check_box_tag "task_ids[]", task.id %>
<%= task.name %>
</li>
<% end %>
</ul>
<%= submit_tag "Mark as Complete" %>
<% end %>
他のヒント
うわー。それはいくつかのタイミングです。アイテム私のRSSリーダーでこの質問は右の前にライアンベイツから最新の railscast とそれはあなたが求めている正確に何をカバーするために表示されます。
の項目がチェックされているときにデータベースを更新するために、そして完全に更新ボタンを取り払うリモート機能を使用しないのはなぜ?
あなたはコントローラーが見つけ、それに応じてそれらのレコードのそれぞれを更新します投稿にアイテムを反復処理することになるでしょう、あなたのフォームを作成するときには、各レコードのIDを含めることができますので。
所属していません StackOverflow