我正在编写一个为视图提供帮助的gem。我想通过帮助程序插入的HTML非常复杂,我宁愿将其写入_partial.html.erb文件中。如何在应用程序的load_path中获取gem的视图路径?
注意:我发现的唯一一个像这样的宝石就是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"
Devise是如何做到的?
我的宝石:http://github.com/jrmurad/SortableNestedSet 设计宝石:+ http://+github.com/plataformatec/devise
答案 0 :(得分:4)
如果您将'app'目录放在插件的基目录中,Rails默认会将app / views添加到视图路径。
.
├── 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"