7

私のフォームにはこのようなhidden_​​tagがあります

 <%= f.hidden_field :loc , {:multiple => true}  %>

にレンダリングします

 <input id="business_loc" multiple="multiple" name="business[loc][]" type="hidden" style="color: rgb(175, 175, 175); " value="">

現在、business_loc値を、フォームの送信時にrailsが認識することを期待してコンマで区切られた文字列として設定しています。しかし、これは私がサーバー側で得た値です

      "loc"=>["80.22167450000006,13.0454044"] 

代わりは

      "loc"=>[80.22167450000006,13.0454044] 

レールが正しく理解できるように、非表示フィールドに正しい値を設定するにはどうすればよいですか。

4

3 に答える 3

3

値の配列の要素ごとに1つずつ、複数の非表示フィールドを使用する必要があります。

例えば:

<input id="business_loc" multiple="multiple" name="business[loc][]" type="hidden" style="color: rgb(175, 175, 175); " value="80.22167450000006">
<input id="business_loc" multiple="multiple" name="business[loc][]" type="hidden" style="color: rgb(175, 175, 175); " value="13.0454044">

...これらをJSで動的に追加するコードが必要な場合は、jQueryの例を次に示します。

var field = $('<input id="business_loc" multiple="multiple" name="business[loc][]" type="hidden" style="color: rgb(175, 175, 175); " value="13.0454044">');
var form = $('#your-form-id');
form.append(field);
于 2011-08-24T13:45:07.113 に答える
1

非表示のフォームを追加しなくても、text_area を使用すると機能することがわかりました。モデルにあると仮定すると、テキスト領域の値を次のように設定するだけで[1,31,51,61]機能するはずですserialize :var

于 2012-08-07T17:49:29.603 に答える
1

私は最近この同じ問題を抱えていました。私の解決策は、配列をコンマで分割するだけでサーバー側で処理することでした。私の場合、次のようになります。

  # thing_that_has_many_objects.rb     <-- showing custom setter method from the model because my example involves using a virtual attribute
  # params[object_ids] = ["1,2,3,4,5"] <-- from the form - note the format of array with only one element

  def objects=(object_ids)       
    split_array = object_ids[0].split(',') 
    split_array.each do |id|
      self.objects.build(object_id: id)
    end
  end
于 2014-10-02T04:12:17.317 に答える