2016-12-14 43 views
0

當我嘗試呈現部分從一個幫手,它失敗與此(冷凝)的錯誤信息:呈現不知道去哪裏找諧音(從助手代碼)

Missing partial /_cube_icon with [...]. Searched in: 

注意列表搜索的目錄是空的!

相比之下,使用渲染視圖時,它知道在哪裏看:

Searched in: * "/Users/Lars/GitHub/algdb/app/views" 

在助手代碼,我用ActionController::Base.helpers.render()。我應該使用其他渲染功能嗎?我如何告訴它在哪裏尋找偏色?我能否以某種方式錯誤地設置項目?

這是Rails的4.2.4·紅寶石2.3.1

回答

0

部分文件通常駐留在app/views目錄中,而不是位於軌helpers目錄,你可以從你收到錯誤消息看。爲了解決您的問題,我會將_cube_icon文件移動到app/views目錄並在那裏組織您的代碼。我推薦閱讀這部分的Rails文檔的意見Layouts and Rendering

此外,它聽起來像你可能是新的軌道,所以我會看看軌道提供的約定。您可能會也可能不會知道,Rails是一個有意識的框架,意味着某些事情需要在某些地方進行以使其工作。這裏是Rail的MVC框架Action View Overview的視圖部分的另一個資源。希望這可以幫助。

---更新-----

如果你真的想呈現的部分從一個輔助文件,有幾個方法可以做到這一點,但最好的一個使用概述如下:

app/helpers

module MyHelper 
    def custom_render 
    concat(render(:partial => 'cube_icon')) 
    end 
end 

以下是計算器一些鏈接來幫助你。

Rendering a partial from helper #1

Rendering from a partial from herlper #2

Using concat rails

+0

感謝您的迴應! 'app/views'中的部分_is_,在視圖中呈現良好。 我的問題是當試圖從助手代碼呈現相同的部分。 –

+0

好吧,讓我問你這個。你想用代碼完成什麼?你要做的是從app/helpers目錄渲染一個部分是不正確的。助手目錄的目的不是呈現部分。這個責任落入了'app/views'目錄。助手用於提取視圖邏輯(例如if/else。每個循環)使視圖更清潔。也許如果你能詳細闡述我可以幫助你。我真的認爲你可能會錯誤地處理這個問題。 –

+0

爲了補充我的評論,我們直接引用了以下教程: '「幫助程序子目錄包含用於協助模型,視圖和控制器類的任何幫助程序類,這有助於保持模型,視圖和控制器代碼小,專注,整齊。「' –

0

OK,我想通了:

我是從代碼中助手目錄調用render,但從一個函數在標準的SomethingHelper模塊。

當遵循該約定時,事情開始工作。

+1

我很高興你明白了。我更新了我的答案,但是如果你對你有好處。 –