使用pjax获取控制器和操作名称?

时间:2011-10-15 01:27:22

标签: jquery ajax history pushstate pjax

在我的应用程序中,我使用这种技术:

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

有没有办法pjax将其与#container一起发送?

1 个答案:

答案 0 :(得分:0)

假设你正在使用Rails:

我不知道你用什么来生成服务器端响应。我正在使用rack-pjax,并且能够修改库以使用以下内容在主体上设置类和id:

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