0

非表示フィールドと select_tag を使用して単純なフォームを作成しようとしています。このフォームを onChange に送信したい。これが私がこれまでに持っているコードです:

<%= form_for :model, :multipart => true, :remote => true, :url => target_url do |f| %><br>
      <% @array.each do |r| %><br>
        <ul class="list">
          <li class="list block">
            <%= image_tag(r.image_url(:sm_thumb)) if r.try(:images).try(:first) %><br>
            <%= r.child.try(:name) %><br>
            <%= f.hidden_field :id, :value =>  r.id %><br>
            <%= select_tag 'interested_field', options_from_collection_for_select(@array_of_choices, 'id', 'first_name'), :prompt => 'Some Message', :onChange=>"this.form.submit()" if @appropriate? %><br>
          </li>  
        </ul>
      <% end %>
    <% end %>

フォームonChangeを送信できるように、ほとんどの部分で機能しますが、問題は、コントローラーに送信されるパラメーターに選択ボックスの値が設定されていない場合があります(ランダムです)。 params[:interested_field] = ''そのため、ユーザーが選択を行うと、ユーザーが値を選択しているにもかかわらず、フォームは interested_field に空白の値で送信されます。なぜこれが起こっているのか、一生わからない。どんな入力でも大歓迎です。

Rails 3.2 と Ruby 1.9.3 を使用しています

4

1 に答える 1

0

目立たないようにします。今のところ、フォームの ID が必要です#new_model。これをページの JavaScript に追加します。

var modelForm = $("#new_model");
modelForm.find("select").change(function() {
   if( $(this).val() ) modelForm.submit();
});

これにより、値がない場合、少なくとも送信されなくなります。ただし、同じフィールドに対して多数の選択を列挙するのは奇妙です...

于 2013-02-19T07:35:55.113 に答える