2011-12-15 12 views
0

私は、各行の横にチェックボックスがある類似のレポートを作成したいと考えています。各行には、編集可能ないくつかのフィールド(コメントなど)があります。私は、その行の横にあるチェックボックスを選択して、更新したい行をチェックする機能をユーザに与えたいと思っています。次に、フォームの一番下に保存ボタンがあり、その横にチェックボックスが有効になっている行のみが更新されます。フォームの特定の部分を更新する方法

私はレールやウェブプログラミングには一般的ではないので、あなたが私に与えることのできるアドバイスや指導が役立つはずです。

1 - あなたのすべてのチェックボックスが同じ名前を共有する必要があります。

答えて

2

これを達成するための一般的な方法は、にあります。

2 - あなたのすべてのチェックボックスの値は、行/オブジェクト

3- IDでなければなりませんフォームを投稿するとき、唯一の確認のチェックボックスは、POSTデータです。これらのIDSを取得し、これらのオブジェクトのみを更新します。

たとえば、チェックボックスのようなものでなければなりません:あなたのコントローラで、次に

<%= check_box_tag "row_ids[]", row.id, false, :id => "row_#{row.id}" %> 

Row.find(params[:row_ids]).each do |row| 
    # do whatever you want 
end 
+0

私のコントローラの行はモデルでなければなりませんか?私のレポートの背後にあるモデルを使用することを意味しますか? – Ramy

+0

...これは私が特に不明な部分です - "Row.find"の部分はどこにありますか?私は現在、私のコントローラではinitialize()とshow()しか持っていません。投稿を扱う別の方法が必要ですか? – Ramy

+0

行があなたのモデルです。コードの一部がコントローラの動作に入ります。 –

1

さて、あなたがこれを行うことができますが、それはユーザーのために多くの作業が追加されています。彼らUpdateを押す前に複数のチェックボックスをオフにする必要があります。彼らがちょうどアップデートを押すとそれがうまくいけばそれは働いた。

基本的な考え方は、ユーザーが[更新]をクリックするだけで、変更されたレコードのみが更新されるようにすることです。

あなたができることは、各行のレコードのIDを(隠しフィールドタグに)格納することです。次に更新すると、すべての行がループされ、データベースからのレコードが(非表示フィールドに格納されたIDに基づいて)取得されます。コメントだけが編集可能だったとしましょう。次に、コメントが実際に変更されたかどうか(単純な文字列の比較のように)確認し、もしあれば、それを更新することができます。より多くのものが編集可能な場合は、更新する必要があるかどうかを判断する前にそれらをチェックすることもできます。

これは高レベルの説明ですが、実装の詳細をいくつか追加したい場合はお知らせください。

関連する問題