ruby-on-rails - Rails 自定义插件/带有 Partials 的 Gem

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

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

注意:我发现唯一能做这样事情的 gem 是 Devise。当找不到 View 时,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 是如何做到的?

我的 gem :http://github.com/jrmurad/SortableNestedSet
设计 gem :+ http://+github.com/plataformatec/devise

最佳答案

如果将“app”目录放在插件的基本目录中,Rails 会默认将 app/views 添加到 View 路径中。

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

然后,您可以使用插件的辅助方法渲染部分:
render :partial => "plugin_name/my_partial"

请注意,默认情况下,Rails 不会在插件测试环境中提供 View 。要包含它们,请将以下内容添加到 test/test_helper.rb:
ActionController::Base.prepend_view_path File.dirname(__FILE__) + "/../app/views"

关于ruby-on-rails - Rails 自定义插件/带有 Partials 的 Gem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3015261/

相关文章:

ruby-on-rails - 如何手动安装gem

ruby-on-rails-3 - 使用远程 Postgres 数据库安装 Postgres Gem PG

ruby-on-rails - Ruby on rails : Calendar with events

devise - Rails 设计 reset_password_token 不断被标记为 "expired"

ruby-on-rails - Rails3 和回形针

ruby-on-rails - 如何在 Nginx 上部署 Angular Plus Rails?

mysql - Rails 5 左外连接使用 includes() 和 where()

ruby-on-rails - 如何在 Heroku 多个 dynos 上使用载波缓存?

ruby-on-rails - Rails : Populate Heroku database with development. sqlite3 数据

Ruby gem 几乎每个命令都显示 "Invalid argument"错误