我正在使用HAML为网站生成一些静态html页面,我想将常见组件拆分为可以包含在多个页面中的部分,就像在Rails中一样.但是我不想使用整个Rails堆栈来执行此操作,因为它看起来有点矫枉过正.
我在互联网上环顾四周,但没有找到任何东西,比做以下事情更好:
Haml::Engine.new(IO.read("header.haml")).render
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法在HAML中包含所谓的部分内容?我缺少的现有过滤器或命令?
我正在使用Rails 3.0.0.beta3和Haml 3.0.0.rc.2,我无法找到我需要为Haml放置配置行的地方(也不是新版本中的内容,就此而言) .使用Rails 2.3.5和Haml 2,我会这样做
Haml::Template.options[:format] = :html5
Run Code Online (Sandbox Code Playgroud)
在environment.rb中.或者,在Sinatra,
set :haml, {:format => :html5}
Run Code Online (Sandbox Code Playgroud)
在我的主文件中.但是在Rails 3中,一切都被改变了,无论我把配置线放在哪里,我都会得到一个未定义的方法或未定义的对象错误.
因为我对HTML标签感到恼火,所以我开始将我的项目转换为HAML,因为它的结构更好.我很高兴安装提供了html2haml帮助我的工具.
虽然在语法上是正确的,处理文件给我一个奇怪的错误,我不太明白:
/stories/_story.html.haml:28: syntax error, unexpected keyword_ensure, expecting keyword_end
...:Util.html_safe(_erbout);ensure;@haml_buffer = @haml_buffer....
... ^
/stories/_story.html.haml:31: syntax error, unexpected $end, expecting keyword_end
Run Code Online (Sandbox Code Playgroud)
我的haml源只有27行,因为我对此很新,我不知道它出错了...这里是代码:
%h1= story.title
%center
%i
by #{link_to story.user.name, story.user}
#story-short= story.short_desc
- if logged_in? and @current_user.id == story.user_id
.list-buttons
%center
= link_to 'Edit', edit_story_path(story)
|
\#{link_to 'Delete', story, :method => 'delete', :confirm => 'Are you really sure?'}
#story-body
- story.body.split("\n").each do |line|
- if line.strip.empty?
%hr/
- else
%p= line.strip
#comments
%p{:onclick => "$('#comments').find('dl').slideToggle();"} Comments to this …Run Code Online (Sandbox Code Playgroud) 在各种论坛和博客中,我看到一些人宣传HAML,一些人宣传HTML.使用HAML与HTML有什么优缺点?
如果我使用HAML支持HTML(如果有的话),我只想了解我错过了什么.
在带有HAML(3.1.4)的rails 3.0中,我有
一些类似模板的部分,如_template.html.haml:
.panel.top
= yield :panel_top
.content
= yield
Run Code Online (Sandbox Code Playgroud)另一个部分将使用prev模板显示(所有这些东西都是使用AJAX渲染的,但这没关系)
- content_for :panel_top do
.title.left
= title
content text
Run Code Online (Sandbox Code Playgroud)这就像Rails 3.0中的魅力一样
但是,升级到3.2后这个失败了!Yiels只是产生"内容文本",所以我有两次"内容文本",根本没有标题
只有改变= yield :panel_top以= content_for :panel_top作品为3.2
我不确定这个解决方案是否正常,如果它是稳定的或推荐的,我找不到任何关于yield处理和Rails 3.1发行说明中的变化的注释,也没有找到3.2中的注释.
你能帮助组织yield内部部分的最佳方法吗?
我有一个表格:
%form{:action:method => "post"}
%fieldset
%label{:for => "title"} Title:
%input{:name => "title", :type => "text", :value => ""}/
%label{:for => "notes"} Notes:
%input{:name => "notes", :type => "text", :value => ""}/
%a.finish{:href => "/rotas", :method => "post"} Finish!
Run Code Online (Sandbox Code Playgroud)
但是,链接似乎并不想工作 - 也许我错过了在Haml或Rails中基本的东西.
我在我的routes.rb中有一个:资源rotas,我的控制器有一个def create方法.
任何帮助表示赞赏!谢谢!
顺便说一句.我使用scaffold生成 - 似乎相同的表单用于编辑模型和创建.它如何知道是POST还是PUT?
我正在尝试使用看起来像这样的HAML创建一个链接
=link_to("Last updated on<%=@last_data.date_from.month %>",'/member/abc/def?month={Time.now.month}&range=xyz&year={Time.now.year}')
Run Code Online (Sandbox Code Playgroud)
它没有采用Ruby代码,而是将其显示为字符串
上次更新于<%= @ last_data.date_from.month%>
并在URL中也没有采取功能Time.now.month或Time.now.year.
如何在URL和字符串中传递Ruby代码?
哈姆可以渲染
%input{:type=>"text"}
Run Code Online (Sandbox Code Playgroud)
如
<input type="text">
Run Code Online (Sandbox Code Playgroud)
想知道haml应该是什么,所以它在html中呈现为
<input type="text" required>
Run Code Online (Sandbox Code Playgroud)
谢谢
是否可以在Angular 2中使用HAML作为模板引擎?
在Angular 2(版本2.3.1)中,您可以使用scss/sass而不是css.这是一个给定的选项angular-cli有--style.对于模板,cli只允许通过设置在内联模板之间进行更改--inline-template.
除非得到支持,否则我如何配置我的Angular 2 App(由angular-cli版本创建1.0.0-beta.26)来编写HAML,编译HTML并使用HTMLin ?component作为templateUrl?
编辑
Angular/cli使用webpack.我不知道如何配置webpack在捆绑所有内容之前将haml渲染为html.我如何haml-loader在Angular中使用?
简短说明(我们在浏览器调试器网络选项卡中):
AJAX GET /page/42 takes ~20s
replay/resend this XHR takes ~15s
open this XHR in new tab takes ~1.5s (only!)
replay/resend this XHR takes ~15s (again)
Run Code Online (Sandbox Code Playgroud)
仅在开发中发生
总是(和跨浏览器)重现能力
Rails 3.2.22.5
HAML失去了时间(非常肯定)
我正在开发一个HTML编辑器来设计打印页面.这个编辑器 - 让我们说 - 全面.
启动时我必须渲染完整的编辑器HAML(~1000行),这需要不到5秒(除非在rails启动后首先).这相当快.
基本结构看起来像这样(伪HAML,每行是部分,数字是〜渲染时间)部分计数(n)通常在10到15左右
editor_layout
editor (~5s)
edit_background (~1.5s)
the_page (0.1s*n)
section_1
.
.
section_n
dialog_1
dialog_2
.
.
dialog_42
Run Code Online (Sandbox Code Playgroud)
打印时(PDF)看起来像
print_layout (~1.5s)
the_page (0.1s*n)
section_1
.
.
section_n
Run Code Online (Sandbox Code Playgroud)
到目前为止,在开发环境中特别好,特别好.
但是当我必须在编辑器中更改页面并使用AJAX调用新页面以获得内部HTML时
no_layout
edit_background (~15s)
the_page (1s*n)
section_1
.
.
section_n
Run Code Online (Sandbox Code Playgroud)
动作需要大约15秒(!).时间来自渲染一个部分现在需要1秒而不是100毫秒.如果我在新的浏览器选项卡中打开相同的URL,我将恢复到通常的1.5秒.
我不知道为什么.
使它更奇怪:
我可以用AJAX重新加载(重新渲染)编辑器的任何(HTML)部分,这看起来像
/page/42/edit?inner-html=background, dialog_1, …Run Code Online (Sandbox Code Playgroud)