0

次のチェックボックスとラジオボタンで、listings_controller の「update」メソッドを呼び出したいと思います。

どうすればそれを実現できますか?テーブル内に要素をコーディングしましたが、どうすればパラメータを送信できますか? AJAX を使用したいのですが、どこから始めればよいですか?

    <%= stylesheet_link_tag 'listings' %>
    <h1>Listing listings</h1>
    <table class="datatable">
    <tr id="heading" >
     <th >id</th>
     <th >name</th>
    </tr>

    <% @listings.each do |listing| %>
      <tr id="body">
    <th><%=listing.id%></th>
        <th><%= link_to listing.name, edit_listing_path(listing) %></th>

    #How can I have the following invoke the update method in AJAX format
     <td><%= radio_button_tag(:keep, "Keep") %>
        <%= label_tag(:keep, "Keep") %></td>
    <td><%= radio_button_tag(:keep, "Delete") %>
        <%= label_tag(:keep, "Delete") %></td>
    <td><%= check_box_tag(:checked) %>
        <%= label_tag(:checked, "checked") %></td>
    <td><%= check_box_tag(:collected) %>
        <%= label_tag(:collected, "collected") %></td>
    <td><%= check_box_tag(:digitized) %>
        <%= label_tag(:digitized, "digitized") %></td>
    <td><%= check_box_tag(:in_database) %>
        <%= label_tag(:in_database, "in database") %></td>
      </tr>
    <% end %>
</table>
<br />
<%= link_to 'New Listing', new_listing_path %>

どうもありがとう。

4

1 に答える 1

1

あなたのニーズはかなり曖昧ですが、これには間違いなくjQueryを使用してください。にアクセスしてapp/assets/javascripts/listings.js.coffee、次のことを試してください。

$('input.some_class').bind('update', ->
  $.post('/listings/update', { param1: value, param2: value ... }, (data) ->
    alert('updated!')

または、単純な JavaScript ( app/assets/javascripts/listings.js)

$('input.some_class').bind('update', function() {
  $.post('/listings/update', { param1: value, param2: value ... }, function(data) {
    alert('updated!');
  });
}); 
  • チェックボックス、ラジオボタンなどにクラス名を付けます
  • 送信するデータの適切なフィールドに入力します (updatesリスト コントローラーのメソッドによって受け入れられるデータ)。
  • コールバック用の適切なコードを配置します ( ではなくalert('updated!')、何も配置しないこともできます)

しかし、繰り返しますが、あなたのニーズは少し曖昧です。これが良い出発点になることを願っています. プロジェクトに AJAX を組み込む前に、jQuery とおそらくは coffeescript を学習することをお勧めします。少し微調整して利用することもできますが:remote => true、それは別の話です.

于 2012-06-02T05:00:42.483 に答える