Получить имена контроллеров и действий с помощью pjax?

#jquery #ajax #history #pushstate #pjax

#jquery #ajax #история #pushstate #pjax

Вопрос:

В моем приложении я использую эту технику:

 <body id="action" class="controller">
  

Есть ли способ отправить pjax вместе с #container ?

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

1. Не уверен, что понимаю — отправить что вместе? Что ты пытаешься сделать?

Ответ №1:

Предполагая, что вы используете Rails:

Я не знаю, что вы используете для генерации ответа на стороне сервера. Я использую rack-pjax и смог изменить библиотеку, чтобы установить класс и идентификатор в теле следующим образом:

 --- pjax.orig.rb    2012-05-04 22:46:22.000000000 -0700
    pjax.rb 2012-05-04 22:46:57.000000000 -0700
@@ -13,6  13,10 @@
       headers = HeaderHash.new(headers)

       if pjax?(env)
         request_parameters = env['action_dispatch.request.parameters']
         controller_name    = request_parameters[:controller]
         action_name        = request_parameters[:action]
 
         new_body = ""
         body.each do |b|
           parsed_body = Hpricot.XML(b)
@@ -22,6  26,13 @@

             new_body << title.to_s if title
             new_body << container.inner_html
             new_body << <<-EOS
               <script type="text/javascript">
                 $('body').removeClass();
                 $('body').addClass('#{controller_name}');
                 $('body').attr('id', '#{action_name}');
               </script>
             EOS
           else
             new_body << b
           end