将布局从一个控制器更新到另一个

时间:2011-11-14 05:35:41

标签: ruby-on-rails-3

我的rails应用程序有两个基于两个控制器/视图/模型的页面。两个控制器使用不同的布局

控制器A /视图A - 使用布局A - 使用jquery js / jquery css 控制器B /视图B - 使用布局B - 没有jquery ...标准默认值..

当我从页面A(基于控制器A /视图A)导航到页面B(基于控制器B /视图B)时...布局更改不会立即生效。我必须从浏览器手动“重新加载页面”...才能启动布局。

为什么布局更改不会自动生效?我该怎么做才能实现这一目标?

当我从B页切换回A页时......布局立即改变....不确定为什么当我从A页移到B时同样的事情不会发生。

添加了布局代码:

-- Layout 1
<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    </meta>
    <title>myapp1</title>
    <%= stylesheet_link_tag "jquery.mobile.min.css" %>
    <%= javascript_include_tag "application","rails","jquery.min.js","jquery.mobile.min.js" %>
    <%= csrf_meta_tag %>
  </head>

  <body>
        <div data-role= "page" >
        <%= yield %>
        </div>
   </body>

</html>


-- Layout 2


<!DOCTYPE html>
<html>
  <head>    
        <title>myapp1</title>
   <%= csrf_meta_tag %>
  </head>
  <body>
    <div data-role= "page" >
    <%= yield %>
    </div>
  </body>
</html>

添加控件代码的摘录,其中调用布局:

controller # 1

class HeadersController < ApplicationController
  layout "xjquery"
  before_filter :authenticate

controller # 2

class RhattachmentsController < ApplicationController
  layout "xplain"

  def index
       rhid = session[:header_id]

1 个答案:

答案 0 :(得分:1)

最终对我有用的是将:rel=>"external"添加到link_to,它将我从View A转到ControllerB / View B.这会强制整页重新加载并立即应用新布局。