2

いくつかの入力フィールドを持つフォームがあります。そのうちの 1 つは、ユーザーが選択する必要がある要素を検索し、選択した要素をフォームに含めるために使用されます。次のコードを使用して、邪魔にならない ajax でこれを実行しようとしました。

<td><%= link_to 'Search', select_customer_path(:search_customer), :remote => true,
:submit=>"search_customer", :with => "'id='+ $('search_customer_').value" %></td>

検索プロセスを実行するために search_customer フィールドを link_to 関数に渡すことが可能かどうかはわかりません。次は完全なフォーム コードです。

<%= form_for @doc, url: docs_path, :remote => true do |f| %>

<div class="row">
<div class="col-lg-8">
    <div class="well doc_form">
        <div class="field">
            <%= f.label :doc_date , :class => 'control-label'%>
            <%= f.label Time.now.to_formatted_s(:short), :class => 'form-control' %>
        </div>
        <table>
            <tr>
                <td> <%= f.label :search_customer, "Customer Search:" %> </td>
                <td> <%= text_field :search_customer, "" %> </td>
                <td><%= link_to 'Search', select_customer_path(:search_customer), :remote => true, :submit=>"search_customer", :with => "'id='+ $('search_customer_').value" %></td>
            </tr>
        </table>
        <div>
            <div id="founded_customer" style="height: 200px; width: 350px;overflow: auto"></div>
        </div>
        <div class="field">
            <%= f.label "Selected Customer" , :class => 'control-label'%>
            <div id="selected_customer" class="selected_customer">
                <%= f.hidden_field :customer, :value =>@doc.customer %>
            </div>
        </div>
        <div class="field">
            <%= f.label :price , :class => 'control-label'%>
            <%= f.number_field :price , :class => 'form-control'%>
        </div>
        <div class="field">
            <%= f.submit 'Save', :class => 'btn btn-primary' %>
        </div>
    </div>
</div>
</div>
<% end %>

ありがとう

4

1 に答える 1

0

これを試してください:

<%= link_to 'Search', select_customer_path(:search_customer), :onclick => "ajax_search($(this))" %>

<%= javascript_tag do %>
  window.ajax_search = function(link_to) {
    $(this).preventDefault();
    var url_to_go = $(this).attr('href');
    var search_value = $('#search_customer').val();
    if(url_to_go.indexOf('?') > -1) {
      url_to_go += '&search=' + search_value;
    } else {
      url_to_go += '?search=' + search_value;
    }
    $.ajax(url_to_go, success: function(data) {
      # handle here the success response
    })
  }
<% end %>
于 2013-08-28T15:58:56.530 に答える