pjax с rails 3.1 redirect_pjax_to отображает только текст

#ruby-on-rails #ajax #ruby-on-rails-3.1 #pjax

#ruby-on-rails #ajax #ruby-on-rails-3.1 #pjax

Вопрос:

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

Когда я использую метод перенаправления из драгоценного камня. Браузер отображает ответ в виде текста. Я использую текст / 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:

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

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

Комментарии:

1. Я могу работать со ссылками без проблем. Это происходит, когда я использую метод redirect_pjax_to в контроллере, который поставляется с драгоценным камнем pjax-rails. Этот метод является эквалайзером. для redirect_to только с ajax / pjax.