5

Rails 3.0.5 を使用しています

jQueryドロップダウンチェックリストを使用するJavaScriptコードがあり、持ち物コントローラーの「編集」アクションでフォームを使用するときに、どのアイテムが既にチェックされていて、どのアイテムがチェックされていないかをチェックボックスに表示したいと思います。

基本的に、Javascript では次のように動作します。

$('element').val([1,3,4]);
$('element').dropdownchecklist();

コントローラーの edit アクションに、選択された項目 (ここでは @selected_items = [1,3,4]) を含む @selected_items というインスタンス変数があり、この値を使用したいとします。インスタンス変数を Javascript コードに追加するにはどうすればよいですか? .js ファイルでこのインスタンス変数の値にアクセスするにはどうすればよいですか?

ご回答ありがとうございます。

4

2 に答える 2

9

ビューに JavaScript を記述し、適切な場所に@selected_items配列を json として出力します。

app/views/*/*.html.erb

<script>
  $('element').val(<%= @selected_items.to_json %>);
  $('element').dropdownchecklist();
</script>

より複雑なオブジェクトをシリアライズできない場合は、 Gon gemを使用することもできます。to_json

于 2012-09-04T09:07:23.247 に答える
2

そのような要件を処理するためのより良いクリーン/きちんとした方法は、

1.レールのベストプラクティスに従っていないビュー内にJavaScriptを作成しないでください

2 .このように扱う

app/views/*/*.html.erb (@selected_items) のようなインスタンス変数を持っている場所で、ヘルパー内のオプションに割り当てます:sel => @selected_items

あなたのJavaScriptで

<script>
  $('element').attr('sel');
  $('element').dropdownchecklist();
</script>

それが役立つことを願っています!

于 2012-09-04T09:43:08.543 に答える