Boxy.js, XHR, Ruby on Rails - PullRequest
       27

Boxy.js, XHR, Ruby on Rails

1 голос
/ 02 апреля 2011

Я использую Boxy.js, чтобы вызвать мою страницу регистрации в модальное окно.Я полагаю, это Ajax.Я хочу, чтобы страница не отображалась с макетом, когда она вызывается таким образом.

Я пробовал:

layout proc {|controller| controller.request.xhr? ? false: "application" }

и:

def render(*args)
    args.first[:layout] = false if request.xhr? and args.first[:layout].nil?
    super
  end

в контроллере приложения, фрагментыЯ гуглил, но они не работают./ signup все еще подходит к макету.

Вот часть заголовков, когда / signup вызывается Boxy:

URL запроса: http://localhost:3000/signup?_=1301708866195

Метод запроса: GET

X-Requested-With: XMLHttpRequest

1 Ответ

1 голос
/ 01 июня 2011

Рекомендуется использовать js-ответ Rails, например:

respond_to do |format|
  format.html
  format.js { render :action_name, :layout => false }
end

Но поскольку jQuery по умолчанию не отправляет правильные заголовки XHR, вам нужно добавить что-то подобное в ваш application.js:

$.ajaxSetup({
  headers : {
    'Accept' : 'text/javascript',
    'X-Requested-With' : 'XMLHttpRequest'
  }
});

Если вы хотите использовать что-то быстрое и грязное, попробуйте следующее:

respond_to do |format|
  format.html { render :layout => false if request.xhr? }
end
...