以下是一个开始:
首先,在视图中使用link_to方法创建您的按钮,例如:
=link_to "delete", "#{invitation_path(invitation)}.json", :method=>:delete, :remote=>true, :class=>"remove", :confirm=>'Are you sure you?'
请注意,我在我的资源URL末尾附加了“.json”。这只是一个AJAX删除的示例,查看google link_to以了解参数的含义。概念是使用参数:remote设置为true进行HTTP请求,换句话说,这会从您的浏览器转换为AJAX调用。
其次,编写一些javascript代码,以便您可以处理当用户单击步骤1中的link_to时,您的浏览器将执行的AJAX调用的任何结果。有关详细信息,请参见此博客文章:
http://www.alfajango.com/blog/rails-3-remote-links-and-forms/
来自我的网站的一个示例:
jQuery(function($) {
var toggleLoading = function() { $("#loading").toggle() };
$("#pending_invitation")
.live("ajax:loading", toggleLoading)
.live("ajax:complete", toggleLoading)
.live("ajax:success", function(event, data, status, xhr) {
var response = JSON.parse(xhr.responseText)
if (response.result == "ok") {
$(this).fadeOut('fast');
}
else {
var errors = $('<div id="error_explanation"/>');
errors.append('<h2>Pending invitation action error</h2><ul><li>' + response.error + '</li></ul>');
$('#new_invitation_error').append(errors)
}
});
});
您可以看到我解析了返回的json,并根据其更改页面上的HTML。请注意,此js使用顶部视图中定义的CCS ID和类,该视图未在此处包含。
如果现在想编写自己的控制器来输出json,这里是一个示例:
class InvitationsController < ApplicationController
respond_to :html, :json
def destroy
@invitation = Invitation.find(params[:id])
respond_to do |format|
if @invitation
@invitation.destroy
flash[:success] = I18n.t 'invitations.destroy.success'
format.json { render :json =>{:result => "ok", :message=>"Invitation #{params[:id]} was destroyed", :resource_id=>params[:id] } }
else
format.json { render :json => { :result=>"failed", :error=>"Cannot find Invitation #{params[:id]}", :resource_id=>params[:id] } }
end
end
end
end
希望这可以帮到你。
getScript()
的示例。我对Rails的掌握还不够好,无法看出这个示例如何适用于我所需的内容... - Tony Starkaction.js.erb
,而我不想要。我认为您正在寻找与我相同的东西。如果是这样,我会尝试找到一个示例并回复。 - cbmeeks