3

HAML ドキュメントにいくつかのチェックボックスがあり、[更新] ボタンをクリックしたときに表示される結果を変更する必要があります。これは正常に機能しますが、ページをリロードすると、チェックされていたボックスがすべて再びチェック解除されます。

HAML を再構成して、ページ ビュー間でチェックボックスのチェック状態を維持するにはどうすればよいですか?

= form_tag movies_path, :method => :get do
  Include:
  - @all_ratings.each do |rating|
    = rating
    = check_box_tag "ratings[#{rating}]", '1', true
  = submit_tag 'Refresh'

また、デフォルトでチェックボックスをオンにするように指定しましたが、ページを読み込んだときにチェックされません...

4

3 に答える 3

5

これにより、目的が達成されます。

    = form_tag movies_path, :method => :get do
      Include:
      - @all_ratings.each do |rating|
        = rating
        = check_box_tag "ratings[#{rating}]", rating, if params[:ratings]; params[:ratings].include?(rating) end
    = submit_tag 'Refresh'

インスタンスはparams[:ratings]呼び出し後も保持されるため、それを使用して、ユーザーが以前にクリックしたボックスをマークすることができます。

于 2012-10-20T23:15:27.807 に答える
2

supernova32 は非常に近かった。

唯一欠けていたのは、最後の行「...デフォルトでチェックボックスをオンにする必要があることを指定しました」に基づいていました。

コードは次のようになります。

= check_box_tag "ratings[#{rating}]", 1, if params[:ratings]; params[:ratings].include?(rating) else true end

param が存在しない場合 (デフォルト状態) には、ELSE ステートメントを含めるだけです。

于 2013-08-04T21:53:51.527 に答える
0

チェックボックスはビジネスデータの永続的な状態を表していないと思いますが(そうでなければ、これは当てはまりません)、実際にはビューを一時的に構成するための一種の「フィルター」または同様のものです。

その場合、チェックボックスではなく結果のみを AJAX で要求する必要があります。消えることはないので、どこにでも保管する必要はありません。

于 2012-10-20T12:26:16.627 に答える