pjax с рельсами 3.1 redirect_pjax_to отображает только текст - PullRequest
0 голосов
/ 04 октября 2011

Я пытаюсь использовать гем pjax-rails для проекта.

Когда я использую метод перенаправления из драгоценного камня. Браузер отображает ответ в виде текста. Я использую текст / javascript вместо script / javascript.

Вот так выглядит мой контроллер (обратите внимание на redirect_to_pjax):

 def create
@contact = Contact.new params[:contact]
if @contact.save
    flash[:notice] = "Successfully added contact"
    redirect_pjax_to :show,@contact
end

это драгоценный камень https://github.com/rails/pjax_rails

Это оригинальная реализация метода "redirect_pjax_to" Я думаю, что магия происходит здесь .... (взято из github)

 private  
def redirect_pjax_to(action, url = nil)
  new_url = url_for(url ? url : { action: action })

  render js: <<-EJS
    if (!window.history || !window.history.pushState) {
      window.location.href = '#{new_url}';
    } else {
      $('[data-pjax-container]').html(#{render_to_string("#{action}.html.erb", layout: false).to_json});
      $(document).trigger('end.pjax');

      var title = $.trim($('[data-pjax-container]').find('title').remove().text());
      if (title) document.title = title;
      window.history.pushState({}, document.title, '#{new_url}');
    }
  EJS
end

Я полагаю, что render: js здесь нужен content_type ...

У кого-нибудь есть такие же проблемы? Или лучше какие-нибудь решения?

1 Ответ

0 голосов
/ 04 октября 2011

Можете ли вы узнать, звонили ли вы в AJAX? Если вы создаете элемент ввода вместо элемента привязки, я думаю, что pjax не будет запущен

Я использую PJAX в своем приложении на Rails, просто проверяя заголовок HTTP-запроса для PJAX, а затем выполняю render: layout false. Работает как шарм.

...