在 Gem 中获取部分视图文件 (haml) 并在 Rails 中使用
Take view file (haml) partial in Gem and use in Rails
我创建了一个 gem,它在 app/views/merchants_support/navigation.html.haml
位置有一个文件,我想在我的 rails 应用程序中使用它作为一个部分。
我发现一个堆栈溢出提示我可以这样做:= render partial: "merchants_support/navigation"
这显然行不通。关于如何做到这一点有什么想法吗?
将 navigation.html.haml
重命名为 _navigation.html.haml
因为所有分区都应以 _
符号开头。
Here是关于这个约定的详细信息。
对于rendering arbitrary files,你可以这样写:
render file: "/path/to/rails_apps/your_app/path/to/your/file"
The :file option takes an absolute file-system path.
所以,你可以这样做:
<%= render file: Rails.root.join("app/path/to/your/file") %>
或者,也许这样更好:
<%= render file: Rails.root.join(*"app/path/to/your/file".split('/')) %>
如果您要渲染的文件是另一个控制器中的视图(这就是您的路径),那么您可以简单地执行以下操作:
<%= render template: "merchants_support/navigation" %>
我创建了一个 gem,它在 app/views/merchants_support/navigation.html.haml
位置有一个文件,我想在我的 rails 应用程序中使用它作为一个部分。
我发现一个堆栈溢出提示我可以这样做:= render partial: "merchants_support/navigation"
这显然行不通。关于如何做到这一点有什么想法吗?
将 navigation.html.haml
重命名为 _navigation.html.haml
因为所有分区都应以 _
符号开头。
Here是关于这个约定的详细信息。
对于rendering arbitrary files,你可以这样写:
render file: "/path/to/rails_apps/your_app/path/to/your/file"
The :file option takes an absolute file-system path.
所以,你可以这样做:
<%= render file: Rails.root.join("app/path/to/your/file") %>
或者,也许这样更好:
<%= render file: Rails.root.join(*"app/path/to/your/file".split('/')) %>
如果您要渲染的文件是另一个控制器中的视图(这就是您的路径),那么您可以简单地执行以下操作:
<%= render template: "merchants_support/navigation" %>