【问题标题】:How to replace html with haml in File.read()如何在 File.read() 中用 haml 替换 html
【发布时间】:2019-08-22 15:41:38
【问题描述】:

我尝试重写其中一个进程来读取 Haml 文件以替换现有的工作 HTML 文件,如下所示:

这是控制器中的现有代码:

f= "app/views/newform/.html.erb"
@ui= File.read(f)

根据 Haml 引擎 documentation 我尝试将其替换为

html_engine = Haml::Engine.new(f)
@ui= html_engine.render

得到这个结果只是文件名:

=> "app/views/articles/new_article/form_article.haml\n"

而不是(在 HTML 中时)

[1] pry(#<JinController>)> @ui
=> "<%\n  article = Article.new\n%>\n<%= fields_for article do |f| %>\n  <%= f.label :title, \"Title\" %>\n  <%= f.text_field :title %>\n
<%= f.label :text, \"Text\" %>\n  <%= f.text_field :text %>\n  <%=
f.label :text, \"Keywords\" %>\n  <%= f.text_field :keywords %>\n  <%=
f.label :body, \"Body Content\" %>\n  <%= f.cktext_area :body %>\n<%
end %>\n"

这是 HTML:

<%                                                                                                                                    
  article = Article.new                                                                                                               
%>                                                                                                                                    
<%= fields_for article do |f| %>                                                                                                      
  <%= f.label :title, "Title" %>                                                                                                      
  <%= f.text_field :title %>                                                                                                          
  <%= f.label :text, "Text" %>                                                                                                        
  <%= f.text_field :text %>                                                                                                           
  <%= f.label :text, "Keywords" %>                                                                                                    
  <%= f.text_field :keywords %>                                                                                                       
  <%= f.label :body, "Body Content" %>                                                                                                
  <%= f.cktext_area :body %>                                                                                                          
<% end %~

还有哈姆:

.container                                                                                                                            
  %div(style="text-align:center")                                                                                                     
    - @title= 'New Article'                                                                                                           
    - article = @article                                                                                                              
    = fields_for article do |f|                                                                                                       
      = f.label :title, "Title"                                                                                                       
      = f.text_field :title                                                                                                           
      = f.label :text, "Description"                                                                                                  
      = f.text_field :text                                                                                                            
      = f.label :text, "Keywords"                                                                                                     
      = f.text_field :keywords                                                                                                        
      = f.label :body, "Body Content"                                                                                                 
      = f.cktext_area :body     

那么如何在这段代码中用 Haml 替换 HTML 呢?

【问题讨论】:

  • 您是否在此处缺少:Haml:Engine.new(f)
  • 是的,让我再试试这个程序

标签: ruby-on-rails ruby haml


【解决方案1】:

我可能不正确,但那是为了以编程方式与 Haml 交互,而不是 HTML。

来自您链接的文档:

概述 这是以编程方式使用 Haml 的前端。它可以 由用户通过创建新实例并调用来直接使用 #render 渲染模板。例如:

template = File.read('templates/really_cool_template.haml')
haml_engine = Haml::Engine.new(template)
output = haml_engine.render
puts output

注意它正在那里读取 Haml。

我认为“Did you know that HAML and RAILS doing really good together?”可能会对您有所帮助。作者链接到可以转换的 gem 以及其他选项。您只需在中途向下滚动即可。

他链接到Html2haml

Haml and Rails”也讲了。

这实际上来自第一篇文章。

你可以convert an html.erb file to Haml

【讨论】:

  • 您好,谢谢,该链接是关于 html 到 haml 的。我已经在 haml 但我的问题是将现有的 html 文件重构为项目中的其他人的 haml。这只是一个仍然需要 html 并且我想更改的。
  • 该 gem 将现有的 html.erb 文件批量重构为 haml,但如果您只需要一个单一文件,您可以使用该网站链接并将您的视图复制到其中,它应该将其转换为您所需要的 haml可以直接粘贴回来:htmltohaml.com/… 抱歉,我在底部留下的链接没有转到正常工作的应用程序!我错误地更新了答案中的最后一个链接。我刚刚尝试了我的一个 erb 文件,它也可以很好地正确解释 ruby​​。
  • 这必须在代码中完成,而不是手动复制和粘贴。我将尝试调试 Haml 引擎,我认为当我在 pry 中使用 ls 时它就在那里。还是谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 2011-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多