Rails自定义插件/宝石与部分

问题描述:

我正在写一个宝石为视图提供助手。我想通过助手插入的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

如果你把你的插件的基本目录的“应用程序”目录,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