如何为特定的:动作使用不同的布局?
Ruby 1.8.7,Rails 2.3.11
我一直在尝试看起来就是我已经问过的答案了,但是对我来说都没有成功(可能是因为我对Rails相对较新并且没有正确理解它们)。
我正在尝试为模型(海报)创建一个适合打印的视图,可以在/ posters / print / 1访问。 如何让打印操作使用与索引,新建,编辑和显示不同的布局文件?
一个答案说render :layout => 'otherlayout'
,我在print controller方法中生成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文件呈现,而不是包含在海报布局中)。
如果我需要发布更多信息,请告诉我。
您可以使用几种方法。 一个是布局,另一个是通过CSS。 我没有选择其他页面加载和数据库调用,而是选择CSS方法并不难,只需更改要打印的媒体类型,如下所示:
stylesheet_link_tag 'print', :media => 'print'
对于您尝试过的布局:
def print layout 'print' end
当您渲染XML时,它不会获得布局,因为它渲染的XML不使用视图。
对于您要做的事情,您可以在布局中使用stylesheet_link_tag('print', :media => :print)
创建一个打印机样式stylesheet_link_tag('print', :media => :print)
。 打印时,浏览器会自动使用此选项。