2010-05-12 46 views
35

我在這裏面臨着不穩定的狀況。我需要部分呈現一個沒有前導下劃線的頁面。我可以渲染:部分視圖沒有前導下劃線?

<%= render(:partial => "contact" ,:controller=>"home") %> 

這將尋找

app/views/home/_contact.html.erb 

,但我想它尋找

app/views/home/contact.html.erb 

有沒有這樣做的一種方式?

感謝

+0

爲什麼你需要這樣做呢? – Kezzer 2010-05-12 12:24:52

+0

我陷入了危險的境地。我試圖渲染的視圖實際上是一個擁有自己的佈局的不同控制器的視圖。它不被該控制器用作部分。這就是爲什麼。 – ZX12R 2010-05-13 05:14:11

+0

我也陷入了類似的情況。我試圖呈現爲部分的視圖是客戶端JavaScript使用的模板。在客戶端這是一個完整的視圖,但在服務器端它只是一個部分。我不希望服務器端約定搞亂我的客戶端約定。^o^//網絡變得複雜! – Ziggy 2014-02-17 16:49:36

回答

60
<%= render :file => '/homes/contact' %> 
+0

沒有/沒有家之前沒有更好的辦法嗎? – shingara 2010-05-12 12:22:59

+0

謝謝...應該:文件路徑是完整的,而不是本地控制器像.. <%= render:file =>「contact」:controller =>「home」%> – ZX12R 2010-05-12 12:24:58

+0

@shingara,是的,但它是我的習慣是使用絕對路徑,@ ZX12R,不,你不能使用像「home/contact」這樣的完整路徑 – fl00r 2010-05-12 12:36:01

4

你不應該嘗試,如果不是真的有必要繞過約定。我想contact.html.erb包含一個表單。將其放入app/views/home/_contact.html.erb並將其渲染爲app/views/home/contact.html.erb

或者爲fl00r回答:

<%= render :file => '/homes/contact' %> 
+2

問題是新的使用案例已經開始出現,但是這個約定正在阻礙。考慮:我的資產文件夾中有js模板,屬於客戶端的第一級控制器。我想在服務器端視圖中預渲染這些模板。所以在服務器端,這是一個部分。在客戶端這是一個觀點。 Rails將不會識別沒有'_'的部分,但是鏈輪不會編譯帶有前導'_'的模板。生活比約定更復雜^ o^// – Ziggy 2014-02-19 10:44:45

3

由於eteubert指出,導軌的優勢之一是它的本質自以爲是。你在這裏試圖做的是按照你的意願去做。別。如果您需要將另一頁中的內容渲染爲部分內容,那麼您應該遵循約定並從原始頁面中提取部分內容。例如,如果該頁面中存在表單,則將其解壓縮爲部分內容,並使原始頁面也呈現部分內容。

你會發現越少你嘗試打Rails,越容易變成。