разработать драгоценный камень и JQuery - PullRequest
0 голосов
/ 20 июля 2011

Я использую самоцвет для разработки (1.4.2) и рельсы (3.0.7). У меня есть представление с некоторыми флажками и некоторыми jquery, настроенными так, что, когда я устанавливаю флажок, это делает сообщение, которое обрабатывается одним из моих контроллеров. К сожалению, когда я делаю это, он подписывает текущий пользователь. Есть ли простой способ избежать этого? Спасибо!

код запроса:

$(‘.do_some_action).live(‘change’, function(){
  $.post(‘/my_model/do_some_action’, {param1 : param1Value})
   return false
})

базовый контроллер:

class AuthorizedController < ApplicationController
  before_filter :authenticate_user!
  check_authorization
  load_and_authorize_resource

  rescue_from CanCan::AccessDenied do |exception|
    flash[:error] = exception.message
    redirect_to request.referer
  end
end

специальный контроллер:

class MyModelsController < AuthorizedController
  ...
  def some_action
    ...
  end
end

1012 *-Иордания *

1 Ответ

1 голос
/ 20 июля 2011

Звучит так, будто вы не передаете токен CSFR в своих запросах AJAX.

Убедитесь, что метатег CSFR устанавливается, вызывая csrf_meta_tag в HTML.Затем вы можете использовать приведенный ниже бит JavaScript, чтобы убедиться, что тег CSFR установлен для любых запросов AJAX.

$.ajaxSetup({beforeSend: function(xhr) {xhr.setRequestHeader("X-CSRF-Token", $("meta[name='csrf-token']").attr("content")); }});

Вы также можете отключить проверку CSFR для этого действия, добавив приведенное ниже в свой контроллер, ноАльтернатива JavaScript была бы лучше.

skip_before_filter :verify_authenticity_token
...