如何在 Rails 中动态更改格式渲染引擎?
Posted
技术标签:
【中文标题】如何在 Rails 中动态更改格式渲染引擎?【英文标题】:how do i dynamically change my format rendering engine in rails? 【发布时间】:2012-06-11 18:26:31 【问题描述】:我的默认模板引擎是haml,但如果我指定特定参数,我有时会将其更改为erb?
例如,我正在粘贴一些 html 代码,并且只想测试代码而不用 HAML 抱怨其格式。
知道怎么做吗?
【问题讨论】:
相关问题:***.com/questions/339130/…、***.com/questions/6125265/…。 【参考方案1】:做一些类似的事情:
if params[:render_erb]
render 'file.html.erb'
else
render 'file.html.haml'
end
并使用 ?render_erb=true 调用操作
或
render "file.html.#params[:render]" ir params[:render]
并将其命名为 ?render=haml 或 ?render=erb(或者什么都不用,它将使用默认值
在您正在使用的控制器操作结束时
【讨论】:
我试过了,它从来没有切换到haml版本...渲染“connect.html.erb”或渲染“connect.html.haml” 我认为它必须是渲染 :file => '/path/to/file',注意它需要一个绝对系统路径而不是相对路径,你必须指定 :layout = > 也是如此! 您是对的,请在上面编辑您的答案以具有 :file => "" :file => 和绝对路径取决于你要渲染的文件,查看这里guides.rubyonrails.org/layouts_and_rendering.html#using-render【参考方案2】:您只需将文件保存为your_file.html.erb
而不是your_file.html.haml
,我错了吗?
【讨论】:
好吧,我这样做了,但现在它每次都会拿起我的 erb,我希望那部分是有条件的......如果 X 使用 HAML,其他使用 ERB??【参考方案3】:您可以在同一个应用程序中使用不同的模板,您可以为视图使用不同的模板引擎,partials 和 layouts,但据我所知,您不能在多个模板引擎中进出在同一个模板文件中。
如果您只是想使用不同的模板语言删除一些代码,那么我会将其放在单独的部分中。在这种特殊情况下,这似乎是最简单的。
【讨论】:
我不是指在同一个模板文件中使用不同的引擎,我只是想在我的控制器中输入一个条件,说“使用 erb 版本”或“使用 haml 版本”以上是关于如何在 Rails 中动态更改格式渲染引擎?的主要内容,如果未能解决你的问题,请参考以下文章