繁体   English   中英

Haml和Spree的字符串插值问题

[英]String interpolation trouble with Haml and Spree

我正在尝试将Spree商店转换为Haml,而且后端的某些部分也遇到了麻烦。 例如,我采用以下Haml代码:

- @orders.each do |order|   
  %tr{:class => "state-#{order.state.downcase} #{cycle('odd', 'even')}"}   
  %tr{:class => "state-#{order.state.downcase}"}

这是输出HTML(简化为单个迭代):

<tr class="state-#order.state.downcase"></tr>
<tr></tr>

有人可以帮助我理解为什么两种情况下字符串插值都是错误的吗? 我已经看了好几个小时了...

您的HAML语法看起来不错,但可能是cycle导致麻烦和无声地失败。 Cycle是ActionView::Helpers::TextHelper的RAILs方法,因此既然您删除了Spree ,也许您的代码不再包含该库。

如果这是问题的根源,则可以包括ActionView帮助器,也可以不cycle而重写代码,如下所示:

%table
  %tbody
    - @orders.each_with_index do |order,index|   
      %tr{:class => "state-#{order.state.downcase} #{%w(even odd)[index%2]}"}   
        %td{:class => "state-#{order.state.downcase}"}
          #{order.state}

PS-我假设您的示例代码中的第二个tr应该是td ,而您只是提供表的一部分。

我刚刚重新审视了这一点,并发现Deface(由Spree使用)与Haml不兼容。

因此,要么使用ERB并使用它,要么完全禁用Deface并重写所有“损坏的”视图。

PS:为了禁用Deface,我在config/environments/中将development.rbproduction.rbtest.rb添加了config.deface.enabled = false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM