我最近一直在读HAML/SASS,我不太清楚为什么任何人不想使用它.它似乎很容易切换,使事情更清洁,更高效.
更新:
使用其中一个怎么样?我听到的大多数投诉(少数抱怨)似乎与HAML有关,混合和匹配XHTML/HAML和CSS/SASS会有什么问题吗?
更新:
对不起,问题的最后更新.在我看来,从SASS切换回CSS非常简单.如何从HAML切换回HTML?
根据用户是否已登录,我想打印另一种%body标签.
这就是我目前的做法:
- if defined? @user
%body(data-account="#{@user.account}")
%h1 Welcome
-# all my content
- else
%body
%h1 Welcome
-# all my content
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,那里有很多重复的代码.我怎么能消除这个?我已经尝试过以下方法:
- if defined? @user
%body(data-account="#{@user.account}")
- else
%body
%h1 Welcome
-# all my content
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用,因为HAML将其解释为好像%h1和内容是else语句的一部分,当然它们不是.
关于如何解决这个问题的任何想法?我一直在遇到这个问题,所以我无法想象它没有一个简单的解决方案.
我有一个使用Haml进行布局的网页.有一个单独的布局文件(layout.haml),在渲染任何实际的haml页面时使用.layout.haml看起来像
-# layout.haml
!!! XML
!!!
%html
%head
...
%body
...
#content= yield
Run Code Online (Sandbox Code Playgroud)
问题:这当然已经在文档中了,<body>因此在标题中操作事物是不可能的.例如<title>改变通过@title.什么是更多的问题是每个页面特定的Javascript需要在正文中加载.而且layout.haml已经包含Javascript,因此jQuery通常被多次实例化.
有关更好的模板结构的任何建议吗?
是否可以将haml-fixtures与jasmine-jquery结合使用?
我不是很满意必须创建很多静态html-fixture,因为我的所有视图都是用haml编写的.因此,我不仅需要创建大量重复的代码,而且还必须将(已经重复的)代码重写为HTML.双重痛苦.
有什么建议?最佳做法?到目前为止,有人使用过jasmine-jquery和fixtures吗?
我有这个代码:
%p
A debtor with the court's approval can hire attorneys via
%a{:id=>"proc",:href=>'/codes#rule327'}Section 327.
Run Code Online (Sandbox Code Playgroud)
这呈现:
经法院批准的债务人可以通过第327条聘请律师.
我知道这是非常挑剔的,但我不希望这个时期加粗.当我尝试:
%p
A debtor with the court's approval can hire attorneys via
%a{:id=>"proc",:href=>'/codes#rule327'}Section 327
\.
Run Code Online (Sandbox Code Playgroud)
它产生:
经法院批准的债务人可以通过第327条聘请律师.
我想知道如何获得:
经法院批准的债务人可以通过第327条聘请律师.
TL; DR: Microdata强制您在与此itemprops vaule的itemtype相同的元素上使用itemprop.如果你想将你的模板分解为部分,你如何处理这个问题?元素可能只出现在两个位置中的一个位置,无论是在包含模板还是包含的部分中,两者都不能很好地工作.
我正在使用带有haml的Rails,但我想我的问题适用于任何模板引擎,您可以将模板拆分为较小的部分.我大量使用partials,这意味着我的模板通常不超过10行代码.但是将微观数据拟合到这些中似乎过于复杂,那么你应该如何正确地使用微数据?
举个例子:
#app/views/article/show.html.haml
%p Hey, Welcome! Read This wonderful article:
= render @article
#app/views/articles/_article.html.haml
%div[ article ]
%h1= @article.title
%p= @article.description
%div= render @article.video
#app/views/videos/_video.html.haml
%div[ video ]
%h2= video.file_name
%video{ src: video.url }
Run Code Online (Sandbox Code Playgroud)
现在使用微数据:
#app/views/articles/_article.html.haml
%div[ article ]{ itemscope: true, itemtype: 'http://schema.org/Article' }
%h1{ itemprop: 'name' }= @article.title
%p{ itemprop: 'description' }= @article.description
%div{ itemprop: 'video' }= render @article.video
Run Code Online (Sandbox Code Playgroud)
然后什么?我必须VideoObject在同一个div上添加itemtype,itemprop: 'video'因为这就是微数据的工作方式.所以:
#app/views/articles/_article.html.haml
%div{ itemprop: 'video', itemscope: true, itemtype: 'http://schema.org/VideoObject' }= render …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个可重复使用的远程模态.我们的想法是创建一个模型容器并在其中呈现内容yield并在需要时呈现内容.
注意:所有HTML代码都将被写入HAML.我正在使用bootstrap-modal-rails gem来处理我的模态.
我的模态容器布局(不是部分):
%div(class="modal" id="mainModal ajax-modal" tabindex="-1" role="dialog"){:'aria-labelledby'=>"mainModalLabel", :'aria-hidden'=>"true"}
%div(class="c-modal__container")
%div(class="c-modal__layout modal__content")
= yield
Run Code Online (Sandbox Code Playgroud)
在我的application.html.haml,我有一个div定义模态位置如下:
-# ...
%div(id="modal-holder")
- unless params[:nojs]
= javascript_include_tag 'desktop'
-# ...
Run Code Online (Sandbox Code Playgroud)
这是我的问题来自哪里.我有一个book controller用户可以添加书籍的地方.我有一个多步注册,我的new行动必须是我的模式.当用户点击New book链接时,我正在加载一个新模式.
我的New book链接:
= link_to "New book", new_book_path, class: "c-link--navbar", data: { modal: true }
Run Code Online (Sandbox Code Playgroud)
CoffeeScript的(重新写入jQuery)的模式(此代码这篇文章):
$(function() {
var modal_holder_selector, modal_selector;
modal_holder_selector = '#modal-holder';
modal_selector = '.modal';
$(document).on('click', 'a[data-modal]', function() …Run Code Online (Sandbox Code Playgroud) 我正在.text.haml文档中创建电子邮件通知.如何表示空白行?
= @variable.name + " , you have a new update."
=
=
= "There has been new activity."
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我希望只有HAML的两条线=是空行,但只有=标志会导致错误.我该怎么办?
问题是我有一个远程表单,基于条件,id喜欢转换为非远程表单(使用UJS),然后提交.请注意表单上传了文件.
这是详细信息:我最初使用了远程表单
= form_for @myobj, :url => {:action=>"remoteAction", :controller=>"myobjects"}, :remote => true do |f|
... (f.fields....)
Run Code Online (Sandbox Code Playgroud)
它产生HTML:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" data-remote="true" action="/remoteAction">
Run Code Online (Sandbox Code Playgroud)
当我点击提交时,正如预期的那样,表单被提交为"AS JS".在控制器动作中,我正在对提交的表单中的字段进行一些验证.如果所有验证都通过,我执行以下.js.haml模板:
$('form#new_myobj').removeAttr("data-remote");
$('form#new_myobj').attr('enctype', 'multipart/form-data');
$('form#new_myobj').attr('action', '/myobjects/regularAction');
Run Code Online (Sandbox Code Playgroud)
它成功地将页面上的HTML(通过Firebug见证)更改为:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" enctype="multipart/form-data" action="/myobjects/regularAction">
Run Code Online (Sandbox Code Playgroud)
因为形式包含f.file_field,我必须提交尽可能多所以图像可以上传,我不能提交"AS JS"现在,当我点击提交,控制器行动"regularAction"确实叫,但它仍然'AS JS'
问题是,我还需要在HTML中进行哪些更改,以便可以非xhr提交表单?它与标题有关吗?