Rud*_*ils 3 css haml interpolation ruby-on-rails erb
长时间听众,第一次来电.我是芝加哥代码学院的一个6个月大的开发者,我已经坚持这个问题几个小时了.事先,我感谢您的所有帮助和时间.
我正在将ERB模板转换为HAML.再培训局是:
<ul class="nav nav-list">
<li class="nav-header">
<%= navigation_header %>
</li>
<% @navigation_links.each do |link| %>
<% if link[:name].present? %>
<li <%= link[:name] == @topic ? "class='active'" : "" %>>
<%= link_to link[:name], link[:url] %>
</li>
<% else %>
<hr />
<% end %>
<% end %>
</ul>
Run Code Online (Sandbox Code Playgroud)
我遇到麻烦的ERB线是:
<li <%= link[:name] == @topic ? "class='active'" : "" %>>
Run Code Online (Sandbox Code Playgroud)
我已经测试了很多变化,尽可能多地阅读HAML参考,集中在这一部分:
您还可以使用#{}插值在HTML样式属性中插入复杂的表达式:
%span(class="widget_#{@widget.number}")
Run Code Online (Sandbox Code Playgroud)
...并搜索了Google和StackOverflow,但我无法正确输出; HAML一直无视内联CSS.经过我所有的基础工作,我对这个版本非常有信心,但它没有用:
- @navigation_links.each do |link|
- if link[:name].present?
%li{ :class => "#{ link[:name] == @topic ? "active" : ""}" }
= link_to link[:name], link[:url]
- else
%hr
Run Code Online (Sandbox Code Playgroud)
我也试过:erb过滤器,无济于事:
%ul.nav.nav-list
%li.nav-header
= navigation_header
- @navigation_links.each do |link|
- if link[:name].present?
:erb
<li <%= link[:name] == @topic ? "class='active'" : "" %>>
= link_to link[:name], link[:url]
- else
%hr
Run Code Online (Sandbox Code Playgroud)
我也尝试过:css过滤器,但失败了.
什么想法可能是错的?这是我在StackOverflow上的第一个问题,所以如果我省略了一些有用的信息或违反了任何规则,请告诉我.
<li <%= link[:name] == @topic ? "class='active'" : "" %>>
Run Code Online (Sandbox Code Playgroud)
您不需要变量插值.这很容易转化为HAML,如下所示:
%li{:class => (link[:name] == @topic) && "active"}
%li{:class => (link[:name] == @topic) ? "active" : "" }
Run Code Online (Sandbox Code Playgroud)
如果您完全包含或省略该值,则首选第一个.来自HAML文档:
如果指定了单个值并且其计算结果为false,则忽略该值; 否则它会转换为字符串.例如:
Run Code Online (Sandbox Code Playgroud).item{:class => @item.is_empty? && "empty"}
| 归档时间: |
|
| 查看次数: |
4704 次 |
| 最近记录: |