#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.