0

我想让以下复选框和单选按钮调用我的 Listings_controller 中的“更新”方法

我该如何做到这一点?我已经在表格中对元素进行了编码,但我怎样才能让它们发送参数?我想使用 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 和可能的咖啡脚本。你也可以稍微调整一下以使用它:remote => true,但这是另一回事。

于 2012-06-02T05:00:42.483 回答