4

我正在编写一个为视图提供帮助的 gem。我想通过帮助程序插入的 HTML 足够复杂,我宁愿将它写在 _partial.html.erb 文件中。如何让 gem 的视图路径包含在应用程序的 load_path 中?

注意:我发现的唯一能做这种事情的宝石是 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

4

1 回答 1

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"
于 2010-08-25T21:49:51.883 回答