2012-08-03 63 views
1

我有一個使用960網格CSS佈局的Rails 3應用程序。有幾種不同的視圖寬度很寬,我試圖想出一個動態更改這些類的好方法。Rails 3 - 基於控制器名稱動態更改css類

例如: 我的設計控制器(Sessions, Passwords, etc)都使用某一類的寬度限制到340px,而大多數我的其它控制器的使用另一個類來限制寬度540px

所以我340px佈局用途類名稱grid_6 push_5,而我的540px佈局使用grid_10 push_3

無論如何抓取訪問的控制器在application_controller?我的想法是獲取控制器並有一個switch語句,它將類名設置爲helper_method

想法?

回答

1

我能弄清楚,這要歸功於這個帖子:Determine the requested Controller in - ApplicationController

這裏是我最後只是(application.html.erb):

<%= render :partial => 'common/content_container', :locals => { :controller => params[:controller] } %> 

content_container部分:

<% case controller 
    when "sessions", "passwords" 
     container_div_grid_number = "6" 
     container_div_push_number = "5" 
    else 
     container_div_grid_number = "10" 
     container_div_push_number = "3" 
    end 
%> 

<div class="grid_<%= container_div_grid_number %> push_<%= container_div_push_number %> "> 
    <div class="top_<%= container_div_grid_number %>"></div> 
    <div class="middle_<%= container_div_grid_number %>"> 
     <%= yield %> 
    </div> 
    <div class="bottom_<%= container_div_grid_number %>"></div> 
</div> 
+0

只是爲了「良好的形式」,你可能想嘗試將這些東西移動到幫助程序,所以它不在控制器中。在視圖中,有一個名爲'controller'的屬性,它使當前的控制器實例可用,以便您可以檢查您正在使用哪個控制器。 – brettish 2012-08-03 16:18:51

+0

感謝您的提示!我其實需要修改上面的代碼,因爲我改變了我設置類的方式,因爲我注意到在原始標記中一些數字(在主div中)發生了變化...... – dennismonsewicz 2012-08-03 17:29:01