【问题标题】:how do i dynamically change my format rendering engine in rails?如何在 Rails 中动态更改格式渲染引擎?
【发布时间】:2012-06-11 18:26:31
【问题描述】:

我的默认模板引擎是haml,但如果我指定特定参数,我有时会将其更改为erb?

例如,我正在粘贴一些 html 代码,并且只想测试代码而不用 HAML 抱怨其格式。

知道怎么做吗?

【问题讨论】:

标签: ruby-on-rails haml erb


【解决方案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】:

您可以在同一个应用程序中使用不同的模板,您可以为视图使用不同的模板引擎,partialslayouts,但据我所知,您不能在多个模板引擎中进出在同一个模板文件中。

如果您只是想使用不同的模板语言删除一些代码,那么我会将其放在单独的部分中。在这种特殊情况下,这似乎是最简单的。

【讨论】:

  • 我不是指在同一个模板文件中使用不同的引擎,我只是想在我的控制器中输入一个条件,说“使用 erb 版本”或“使用 haml 版本”
猜你喜欢
  • 2011-05-05
  • 2014-08-06
  • 2011-11-04
  • 2013-01-10
  • 1970-01-01
  • 2013-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多