如何在 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 中动态更改格式渲染引擎?的主要内容,如果未能解决你的问题,请参考以下文章

Rails - 格式和渲染 - 它们是如何工作的?

Rails 动态渲染局部

Rails 以不同的格式渲染动作

NVisionXR_iOS教程九 —— 渲染一个骨骼动画

Apache-完成目录列表的动态渲染

浏览器内核