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

时间:2010-06-10 14:20:10

标签: ruby-on-rails rubygems ruby-on-rails-plugins devise

我正在编写一个为视图提供帮助的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

1 个答案:

答案 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"