修饰嵌入式Ruby

时间:2014-10-16 17:24:53

标签: ruby-on-rails slim-lang

我决定尝试使用.slim(超薄模板引擎),因为我不喜欢.erb,而且我也想花点时间学习一些从长远来看可能有用的东西。

由于我同时跟踪rails_tutorial,因此我来到使用yield(:title)的部分

使用.erb,它看起来像这样:

<title><%= yield(:title) %> | Ruby on Rails Tutorial Sample App</title>

使用.slim我设法让它看起来像:

title
  => yield(:title)
  | | Ruby on Rails Tutorial Sample App 

现在,我想要做的是能够在一行中输入它。那么有没有办法用.slim?

来做到这一点

这是另一个我似乎无法创造一行的例子

a<> href="http://www.railstutorial.org/" 
  em Ruby on Rails Tutorial

可能下线我甚至不会做这样的事情但是在这一点上 为了更好地学习,我想了解一些关于.slim的建议。

为了防止出现更多这样的问题,另一个问题是,我在哪里可以找到详细的文档或教程,其中包含这些示例。

后续:

我将如何转换它:

 <% flash.each do |message_type, message| %>
  <div class="alert alert-<%= message_type %>">
    <%= message%>  
  </div>
 <% end %>

好的,我想我已经明白了:

 - flash.each do |message_type, message|
    .alert class="alert-#{message_type}"
      = message

1 个答案:

答案 0 :(得分:2)

标记后跟文本将输出该文本作为标记的内容。您可以在文本中使用字符串插值#{expression}来输出变量。

带插值变量的内容文本:

title #{yield(:title)} | Ruby on Rails Tutorial Sample App

您还可以使用tag =将标记的内容设置为ruby表达式。

title = yield(:title) + " | Ruby on Rails Tutorial Sample App"

请注意,在这种情况下,如果yield(:title)返回nil

,则无效

如果您有嵌套标签,则应将它们放在单独的行上。