【问题标题】:How to avoid newlines being added by HAML ruby block evaluation如何避免 HAML ruby​​ 块评估添加换行符
【发布时间】:2013-06-19 11:28:20
【问题描述】:

我正在使用 content_for 帮助器,例如在我的 rails 3 应用程序中设置页面标题。我在某些地方仍在使用的一个 erb 的 sn-p 是

<title><%= yield(:title) -></title>

或者用 HAML 写成

%title= yield(:title)

现在我有一个 HAML 模板来设置这个标题:

- content_for :title do
  My awesome title
- content_for :something_else do

导致

<title>My awesome title
</title>

如何避免&lt;/title&gt; 之前的换行符?它肯定是在:title 中设置的——添加+"X" 会将X 放在换行符后面。

我已经试过了

-< content_for :title do
-> content_for :title do

但是任何一个都会导致错误。空格删除似乎不适用于 ruby​​ 评估。

【问题讨论】:

  • 为什么不干脆做:%title= content_for?(:title) ? "#{yield(:title)}" : "Default Title"
  • 这与默认标题无关——我也有。问题是即使在这里,yield(:title) 也包含尾随换行符。
  • 有趣...我运行 Rails 3.2 的两个应用程序都使用了我在上面发布的 sn-p,它可以按您的意愿工作。
  • 例如,我的“主页”HAML 文件的第 1 行是:= content_for(:title, "Welcome to my home page!")
  • 那是失去的和平!非常感谢。我是使用 HAML 的新手(但喜欢它!)而且我缺少一些基础知识。如果你写一个答案,你会得到荣誉:-)

标签: ruby-on-rails-3 haml


【解决方案1】:

在您的布局模板中,执行以下操作:

%title= content_for?(:title) ? "#{yield(:title)}" : "Default Title"

然后在您的内容模板中,执行:

= content_for(:title, "Welcome to my home page!")

【讨论】:

  • 这对我不起作用,最后还是换行。我已经通过砍掉标题的最后一个字符来修复它 - “#{yield(:title).chop}”
猜你喜欢
  • 2010-10-03
  • 2014-06-13
  • 2011-04-03
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 2013-01-13
  • 2018-01-29
相关资源
最近更新 更多