2010-10-20 43 views
4

我的問題與此問題中的問題類似,但相反。 How do I specify ":layout => false" in Rails' respond_with?在Rails 3中:如何使用自定義格式在respond_with中進行佈局渲染?

該控制器是一種文件轉換器。它響應很多格式。一種格式應該呈現顯示元數據的html佈局。與大多數其他格式不同,此格式需要呈現佈局。問題是我無法說服Rails來渲染它。

class CustomFilesController < ApplicationController 
    respond_to :all, :only => :show 
    def show 
    @custom_file = CustomFile.find(params[:id]) 
    respond_with(@custom_file) do |format| 
     format.html {} 
     format.xml {} 
     format.json {} 
     format.fil { 
     puts '>>>>> IN FIL <<<<<' 
     render :layout => true 
     } 
     format.any { 
     file = @custom_file.as(:type => params[:format], :size => params[:size]) ## the REAL path to the file 
     (file.nil? || @custom_file.nil?) ? head(:not_found) : send_file(file, :disposition => 'inline', :url_based_filename => true) 
     } 
    end 
    end 
end 

我以爲「:layout => true」會工作,但顯然不是。

正如你所看到的,我已經剝去了控制器中的所有其他東西,然後粘貼在這裏。格式「fil」作爲config/initializers/mime_types.rb中的文本/ html格式添加到MIME類型中。我有我的視圖文件,它呈現,但沒有任何佈局。

我將不勝感激任何意見。現在我已經無處可去,我在網上找到的任何東西都表明我的代碼應該可以工作。

在此先感謝。

+0

您是否嘗試指定佈局的路徑? ':layout =>'/ layouts/mylayout'' – Yannis 2010-10-20 16:12:02

+0

我試過了「應用程序」和「不存在」。當我將它設置爲不存在的佈局時,我得到缺少的佈局錯誤。當我將它設置爲現有的時候,我會得到相同的空白結果。 – 2010-10-20 16:45:38

回答

2

發現如果我指定佈局文件的確切路徑和文件名,則佈局呈現。在我的情況下:

render :layout => '/layouts/application.html.haml' 
相關問題