标签: haml

决定HAML/SASS的原因是什么?

我最近一直在读HAML/SASS,我不太清楚为什么任何人不想使用它.它似乎很容易切换,使事情更清洁,更高效.


更新:

使用其中一个怎么样?我听到的大多数投诉(少数抱怨)似乎与HAML有关,混合和匹配XHTML/HAML和CSS/SASS会有什么问题吗?


更新:

对不起,问题的最后更新.在我看来,从SASS切换回CSS非常简单.如何从HAML切换回HTML?

css xhtml haml ruby-on-rails sass

16
推荐指数
3
解决办法
2116
查看次数

如何在不重复缩进代码的情况下在HAML中执行if/else

根据用户是否已登录,我想打印另一种%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语句的一部分,当然它们不是.

关于如何解决这个问题的任何想法?我一直在遇到这个问题,所以我无法想象它没有一个简单的解决方案.

ruby haml

16
推荐指数
2
解决办法
3万
查看次数

在Haml中构建布局模板

我有一个使用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通常被多次实例化.

有关更好的模板结构的任何建议吗?

ruby haml

16
推荐指数
2
解决办法
2万
查看次数

HAML-茉莉花装置

是否可以将haml-fixtures与jasmine-jquery结合使用?

我不是很满意必须创建很多静态html-fixture,因为我的所有视图都是用haml编写的.因此,我不仅需要创建大量重复的代码,而且还必须将(已经重复的)代码重写为HTML.双重痛苦.

有什么建议?最佳做法?到目前为止,有人使用过jasmine-jquery和fixtures吗?

jquery haml ruby-on-rails jasmine

16
推荐指数
1
解决办法
1365
查看次数

HAML,将类添加到image_tag

我有

= image_tag  "chart.jpg"
Run Code Online (Sandbox Code Playgroud)

我是HAML的新手,所以如何为此添加一个类?

haml

16
推荐指数
2
解决办法
2万
查看次数

ruby haml中链接后的标点符号

我有这个代码:

%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条聘请律师.

ruby haml

16
推荐指数
2
解决办法
2827
查看次数

微数据:如何使用模板/部分?

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)

haml ruby-on-rails microdata

16
推荐指数
1
解决办法
596
查看次数

可重复使用的远程模态导轨

我正在尝试创建一个可重复使用的远程模态.我们的想法是创建一个模型容器并在其中呈现内容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)

ajax jquery haml ruby-on-rails bootstrap-modal

16
推荐指数
1
解决办法
1621
查看次数

如何在.text.haml文档中有空行?

我正在.text.haml文档中创建电子邮件通知.如何表示空白行?

= @variable.name + " , you have a new update."
=
=
= "There has been new activity."
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我希望只有HAML的两条线=是空行,但只有=标志会导致错误.我该怎么办?

haml ruby-on-rails

15
推荐指数
2
解决办法
6829
查看次数

在Rails 3,HAML中使用JS将<form>从远程更改为非远程

问题是我有一个远程表单,基于条件,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提交表单?它与标题有关吗?

forms haml ujs ruby-on-rails-3

15
推荐指数
2
解决办法
3422
查看次数