我正在寻找一个模板引擎.在HAML,SASS/Compass和ERB中进行选择时需要考虑哪些重要因素?
我一直在研究一个软件,我需要生成一个自定义XML文件以发送回客户端应用程序.Ruby/Rails世界上用于生成XML文件的当前解决方案充其量是缓慢的.使用构建器或事件Nokogiri,虽然具有良好的语法和可维护的解决方案,但它们会消耗太多时间和处理.
我绝对可以去ERB,它以牺牲手工构建整个XML为代价提供了很好的速度.
HAML是一个很棒的工具,具有良好而直接的语法并且相当快.但我正在努力使用它来构建纯XML文件.这让我想知道,它有可能吗?
有没有人对某些代码或文档有一些指示,说明如何执行此操作,从HAML构建完整,有效的XML?
我在HAML中有一个相当简单的Rails远程表单,部分在共享/用户之下:
- remote_form_for :user, :url => { :controller => "users", :action => "create" } do |f|
.field
= f.label :name, t('name')
= f.text_field :name
.field
= f.label :email, t('email')
= f.text_field :email
.actions
= f.submit
Run Code Online (Sandbox Code Playgroud)
无论我多么愚弄它,这都行不通.我总是得到以下错误:
undefined method `remote_form_for' for #<#<Class:0x1036e8e40>:0x1036dfd90>
Run Code Online (Sandbox Code Playgroud)
我做了些蠢事吗?它与form_for完美配合.
我是haml的新手,这让我很难过.我不喜欢删除代码,我可以将其注释掉,但我不知道如何正确结束haml中的注释.
这是一个代码snippit:
.field
= f.label :member_id
%br/
= f.text_field :member_id
.field
= f.label :instrument_type
%br/
Run Code Online (Sandbox Code Playgroud)
我试图评论第一个字段,所以我使用:
/
.field
= f.label :member_id
%br/
= f.text_field :member_id
.field
= f.label :instrument_type
%br/
Run Code Online (Sandbox Code Playgroud)
但是在第一个字段之后注释掉了所有内容.
然后我尝试了:
/
.field
= f.label :member_id
%br/
= f.text_field :member_id
.field
= f.label :instrument_type
%br/
Run Code Online (Sandbox Code Playgroud)
但它也不喜欢,或者:
-#.field
-# = f.label :member_id
-# %br/
-# = f.text_field :member_id
.field
= f.label :instrument_type
%br/
Run Code Online (Sandbox Code Playgroud)
我肯定错过了什么.我看了一遍,但这些例子在评论之后从未显示过代码.
我需要一系列类,.module1,.module2,... module(n).
我还想使用css,ruby和HAML定义这些类:
:css
.mod1 {
background-image: url("#{extra.image}");
}
Run Code Online (Sandbox Code Playgroud)
是否可以插入ruby变量以节省工作量?
.module.mod"#{extra.id}"
%h3 #{extra.title}
%p #{extra.description}
%a.btn-default{:href => "#", :target => "_top"} enter now
:css
.mod#{extra.id} {
background-image: url("#{extra.image}");
}
Run Code Online (Sandbox Code Playgroud) 我需要在我的HAML代码中使用这种结构:
- if something1
%div.a
- elsif something2
%div.b
- elsif something3
%div.c
- else
%div.d
%div another content
Run Code Online (Sandbox Code Playgroud)
我希望我会得到类似的东西:
<div class="a|b|c|d">
<div>another content</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但事实上我得到了
<div class="a|b|c|d"></div>
<div>another content</div>
Run Code Online (Sandbox Code Playgroud)
如果需要,我必须如何更新我的代码:
另一个内容?
是否可以在Play视图中使用Haml(或类似诱惑语言,如Scaml或Jade)?
我正在尝试制作一个简单的表格,但它的工作并不那么好.这是我目前的表单代码:
%form{ :controller => 'tool', :action => 'activation', :method => 'post' }
%table{ :border => 0, :width => "100%", :height => "100%" }
%tr{ :align => "center", :valign => "center" }
%td
%input{ :type => "text", :name => "accountName" }
%input{ :type => "submit", :name => "submit", :value => "login" }
Run Code Online (Sandbox Code Playgroud)
我在尝试通过表单发送数据时收到此URL : 10.0.0.2:3000/activation. 我知道我可以tool#activation启动激活路由,但这是一种错误的方式,我想发送帖子查询10.0.0.2:3000/tool/activation,但:action => 'tool/activation'据我所知,这也是一种不好的方式.
你能给我一些建议吗?
我有这个each循环:(haml)
- @deals.each do |a|
.slide
%a{:href => "#"}
- a.attachments.each do |a|
= image_tag(a.file.url, :height =>"325px", :width =>"650px" )
.caption{:style => "bottom:0"}
= a.description
Run Code Online (Sandbox Code Playgroud)
因为@deals是3个表(模型)的组合查询,我用它polymorphic_path来生成图像的链接.
- @deals.each do |a|
.slide
%a{:href => "#"}
- a.attachments.each do |a|
= image_tag(a.file.url, :height =>"325px", :width =>"650px" ), polymorphic_path(@region, @city, a)
.caption{:style => "bottom:0"}
= a.description
Run Code Online (Sandbox Code Playgroud)
但这会产生region_city_attachment_path不正确的结果.第一个每个循环a变量存储正确的值,但我怎么能在第二个循环中reach的第一个a变量each?
所以HAML 4包含一个coffeescript过滤器,它允许我们爱好咖啡的人们做这样的整洁的事情:
- word = "Awesome."
:coffeescript
$ ->
alert "No semicolons! #{word}"
Run Code Online (Sandbox Code Playgroud)
我的问题:对于最终用户来说,这比使用等效:javascript过滤器慢吗?使用coffeescript过滤器是否意味着coffeescript将在每次加载页面时编译为javascript(这显然会造成性能灾难),或者这只会在应用程序启动时发生一次?