Ответ 1
Вот начало:
Сначала создайте свою кнопку с помощью метода link_to в вашем представлении, например:
=link_to "delete", "#{invitation_path(invitation)}.json", :method=>:delete, :remote=>true, :class=>"remove", :confirm=>'Are you sure you?'
Обратите внимание, что я добавляю ".json" к URL-адресу моего ресурса. Это просто пример удаления AJAX, google link_to, чтобы увидеть значение параметров. Понятие, если вы делаете свой HTTP-запрос с параметром: remote set to true, другими словами, это переводится на вызов AJAX из вашего браузера.
Во-вторых, напишите javascript, чтобы вы могли обработать то, что когда-либо было результатом вызова AJAX, который ваш браузер сделает, когда пользователь нажмет на ссылку_ на шаге 1. Подробнее вы можете увидеть это сообщение в блоге: http://www.alfajango.com/blog/rails-3-remote-links-and-forms/
Пример моего сайта:
jQuery(function($) {
// create a convenient toggleLoading 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, определенные в верхнем представлении, которые здесь не включены.
Если вы сейчас хотите написать собственный контроллер, чтобы выплюнуть json, вот пример:
class InvitationsController < ApplicationController
respond_to :html, :json
# other methods here
# ...
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
Надеюсь на эту помощь.