使用jquery创建表单并将数组传递给控制器

时间:2012-10-11 01:05:30

标签: jquery ruby-on-rails ruby-on-rails-3 form-for

我有一个表单(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();
  });

});

当我按下提交按钮时,我希望所有选定的类别都以数组的形式传递给我的控制器。

我如何实现这一目标?

感谢。

1 个答案:

答案 0 :(得分:3)

在div中添加一个隐藏的输入字段,如下所示:

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

该值表示类别的ID。注意category_ids旁边的方括号。 所有隐藏的输入都必须具有完全相同的名称。

值将作为控制器中params散列中的数组传递。