Получить контроллер и имена действий с pjax? - PullRequest
1 голос
/ 15 октября 2011

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

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

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

1 Ответ

0 голосов
/ 05 мая 2012

Если вы используете 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
...