2015-09-10 31 views
0

我有一個當有人單擊超鏈接下載文件時觸發的路由。缺少特定功能的模板錯誤 - 其他工作正常

我的路線:

'/document/download_some_file/' => 'documents#download_some_file' 

我的控制器:

def download_some_file 
    content = 'hello world' 
    send_data content, :filename => 'some_file.dat' 
    # if I comment out the above line (send_data) I get a missing template error 
    # if I name this function anything other than download_xyz I get a missing template error 
end 

這工作得很好。不過我還有一個超級鏈接:

'/document/refresh_files/' => 'documents#refresh_files' 

然後

def refresh_files 
    #stuff here 
    #this throws a missing template error 
    #if I rename this to download_xyz it works fine 
end 

所以......這是怎麼回事這裏到底是什麼?我展示的第一個功能(download_some_file)確實正常工作。

refresh_files是我正在嘗試解決的問題。它應該只是調用Documents控制器內的另一個函數。即使我只是做了一個puts我收到一個模板錯誤。

+0

根據[docs](http://apidock.com/rails/ActionController/Streaming/send_data),'send_data'正在渲染數據,所以Rails不希望渲染視圖。另請參見[本指南]的第12部分(http://edgeguides.rubyonrails.org/action_controller_overview.html)。除非你明確地像這樣渲染,否則Rails會爲每個控制器操作指定一個相應的視圖並隱式渲染它。您可以自定義渲染的內容(更多詳細信息,請參見[本指南](http://guides.rubyonrails.org/layouts_and_rendering.html))。 –

回答

1

這取決於你在做什麼路線。由於您使用download_some_file方法發送文件,因此不需要模板。

對於refresh_files我假設您並未嘗試發送文件,但可能會刷新列表。也許你想要javascript回來。這將需要一個名爲refresh_file.js.erb的模板,它位於app/views/documents文件夾中。如果您從方法本身發送它,任何您請求的格式可能最終需要一個模板,除了可能是json,但您也可以爲此創建一個模板。

一旦你有,你想從你的文件夾中的控制器與您的方法返回一個模板,你將能夠對此作出迴應

0

你需要有相應的模板鑑於稱爲refresh_files.html。 erb控制器方法搜索具有相應名稱的模板。