2010-06-10 53 views
4

我正在寫一個寶石爲視圖提供助手。我想通過助手插入的HTML非常複雜,我寧願將其寫入_partial.html.erb文件中。如何在應用程序的load_path中獲取gem的視圖路徑?Rails自定義插件/寶石與部分

注意:我發現的唯一的寶石就是這樣做的是Devise。當視圖無法找到,Rails的打印這(我的機器上)看起來像負載路徑:

Missing partial sortable_nested_set/tree with {:handlers=>[:erb, :rjs, :builder, :rhtml, :rxml], :formats=>[:html], :locale=>[:en, :en]} in view paths "/home/jason/VirtualRestaurant3/app/views", "/home/jason/.rvm/gems/ruby-1.9.2-preview3/gems/devise-1.1.rc0/app/views" 

如何制定辦呢?

我的寶石:http://github.com/jrmurad/SortableNestedSet 設計寶石:+ http://+github.com/plataformatec/devise

回答

3

如果你把你的插件的基本目錄的「應用程序」目錄,Rails會增加應用程序/視圖默認視圖路徑。

. 
├── app 
│   └── views 
│    └── plugin_name 
│     └── _my_partial.html.erb 

然後你就可以從渲染插件的輔助方法與部分:

render :partial => "plugin_name/my_partial" 

注意,Rails不作默認提供的插件測試環境的意見。要包括他們那裏添加以下test/test_helper.rb:

ActionController::Base.prepend_view_path File.dirname(__FILE__) + "/../app/views" 
+0

我似乎無法得到這個爲我的生活工作。我有一個叫做'admin_site'的gem(現在在本地),它具有上面顯示的目錄結構,'admin_site'代替'plugin_name';我已經使用Bundler將其安裝在我的本地Rails站點上(指向本地的gem,但是)在'admin_site/common/index'(這是它在gem中的位置)請求模板失敗,並且'ActionView :: MissingTemplate',並且我在模板搜索路徑列表中看不到我的gem(我只能得到我的Rails站點的視圖,Devise的視圖以及我的站點的根目錄)。 – 2011-09-14 16:59:11

+1

找到了......我必須包含一個'.rb'文件,它是'class Engine 2011-11-10 20:59:42

+0

想知道你在什麼版本的Rails ..有一個類似問題的時間的魔鬼(我的Rails 2.3.5沒有在我正在開發0123./app/views的gem中找到視圖,並添加你的'class引擎 ilasno 2012-04-27 00:42:23