2011-06-20 64 views
0

的Ruby 1.8.7,Rails的2.3.11如何針對特定操作使用不同的佈局?

我一直在努力,似乎是什麼,我想諮詢一下已經answers,但既不是我成功的工作(可能是因爲我是比較新的Rails的並沒有正確理解它們)。

我正在嘗試爲模型(海報)創建一個適合打印機的視圖,該模型將在/ posters/print/1中訪問。如何讓打印動作使用與索引,新建,編輯和顯示不同的佈局文件?

一個答案說render :layout => 'otherlayout',我在打印控制器的方法,使format.xml { render :layout => 'print', :xml => @poster }。當我刷新(在清除緩存後)頁面時,這並沒有改變任何東西。

對方回答說

layout 'layout', :only => [:first_action, :second_action] 
layout 'second_layout', :only => [:third_action, :fourth_action] 

我把在海報控制器文件的頂部像這樣:

layout 'posters', :only => [:show, :edit, :index] 
layout 'print', :only => [:print] 

但似乎只用後者線(顯示,編輯,和索引直接從他們自己的.html.erb文件中呈現,而不是包裝在海報佈局中)。

如果我需要發佈更多信息,請讓我知道。

+0

你爲什麼想把佈局應用到你的xml格式? – theIV

+0

嗯......我在格式化命令之前已經使用了它,但它拋出了一個錯誤,表示渲染只能在每個動作中調用一次,所以我拋出了渲染出現的唯一位置。 >< – Benjin

回答

1

有幾種方法可以使用。一個是另一個是通過CSS的佈局。而不是另一個頁面加載和DB調用我會選擇這並不難CSS的方法,只是改變了媒體類型進行打印,所以它看起來是這樣的:

stylesheet_link_tag 'print', :media => 'print' 

對於佈局你嘗試過:

def print 
    layout 'print' 
end 
+0

感謝您的回覆如此之快! stylesheet_link_tag更接近我所尋找的一步。這可能更像是一個CSS問題,但我如何擺脫不需要從此打印視圖打印的元素?我不需要顯示導航鏈接之類的東西,但我不確定如何通過更改樣式表使其消失。 當我把佈局'打印'添加到我的海報控制器中的打印動作時,什麼都沒有發生。那是正確的位置嗎? – Benjin

+0

'display:none' – Coder2000

1

當您渲染XML時,它不會獲得佈局,因爲它呈現的XML不使用視圖。

對於您要做的事情,只需在佈局中使用stylesheet_link_tag('print', :media => :print)即可創建打印機樣式表。打印時,瀏覽器會自動使用此功能。

+0

謝謝 - 這更接近我所尋找的。這可能更像是一個CSS問題,但我如何擺脫不需要從此打印視圖打印的元素?我不需要顯示導航鏈接之類的東西,但我不確定如何通過更改樣式表使其消失。 – Benjin

+0

'#nav {display:none; }'應該這樣做。 –

相關問題