4

フォーム(form_for)があり、ユーザーがselectメソッドを使用して複数の「カテゴリ」を選択できるようにしたいと考えています。

= form_for @place, :url=>{:action=>"#"} do |f|
  #appended_wrapper
  .categories
    = f.label :categories, "Categories: "
    = f.select :categories, %w(Active Art Auto Food), {:include_blank => true}
  = f.submit "Submit"

ユーザーがカテゴリを選択するたびに、jQueryにカテゴリの値をdivに追加させて、ユーザーが追加したカテゴリを表示および削除できるようにします。

$('#hotel_categories').change(function(){
  value = $(this).val();
  $('#appended_wrapper').append( '<div class="appended"> '+value+' <a class="remove" href="#">Remove</a></div>' );

  $('.remove').click(function(){
    $(this).parent(".appended").remove();
  });

});

送信ボタンを押すと、選択したすべてのカテゴリが配列でコントローラーに渡されます。

どうすればこれを達成できますか?

ありがとう。

4

1 に答える 1

3

div内に、次のような非表示の入力フィールドを追加します。

<input name="category_ids[]" type="hidden" value="1">

値はカテゴリのIDを表します。category_idsの横にある角かっこに注目してください。非表示の入力はすべて、まったく同じ名前である必要があります。

値は、コントローラーのparamsハッシュに配列として渡されます。

于 2012-10-11T10:41:11.923 に答える