我想使用以下复选框和radiobuttons调用listing_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 %>
非常感谢。
答案 0 :(得分: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
,但这是另一个故事。