【问题标题】:Multiline string in HAMLHAML 中的多行字符串
【发布时间】:2016-04-25 05:15:07
【问题描述】:

因为我不希望我的任何行超过 80 列,所以我想将最后一行分成两行。在行尾添加逗号按照建议的here 工作,但随后逗号出现在字符串中。有没有一种使用 HAML 的又好又干净的方法?

- if object.errors.any?
  %section.form_error_message
    %h4.form_error_message__title
      = "#{pluralize(object.errors.size, 'errors')} prevented this form from submitting. Please fix these errors and try again."

我希望将所有内容都隐藏在 80 列中,就像在此屏幕截图的左侧一样。

【问题讨论】:

  • 如果这些是您以后可能要翻译的文本,您不妨现在改用 I18n。那么你就没有这样的问题了。
  • 或者,您可以使用:ruby 块将您的字符串保存在视图模板中的局部变量中。
  • 谢谢,你说得对,我现在不妨看看 I18n。我认为我的第一个 Rails 应用程序永远不会完成,因为我不断遇到另一个要合并的 gem 或另一个最佳实践(并不是说这是一件坏事!)

标签: ruby-on-rails haml


【解决方案1】:
%div First line |
     and second line |

将呈现:

<div>First line and second line</div>

如果你甚至不想要标签:

First line |
and second line |

将产生:

First line and second line

您可以使用命令工具haml,例如在macOS 上复制代码然后pbpaste | haml,或使用文件cat file.haml | haml

【讨论】:

    【解决方案2】:

    Haml has support for multiline sequences 像这样使用| 字符:

    - if object.errors.any?
      %section.form_error_message
        %h4.form_error_message__title
          = "#{pluralize(object.errors.size, 'errors')} prevented this form from |
            submitting. Please fix these errors and try again."                  |
    

    在这种情况下你并不需要这个,你可以直接使用纯文本的interpolation,你不需要=

    - if object.errors.any?
      %section.form_error_message
        %h4.form_error_message__title
          #{pluralize(object.errors.size, 'errors')} prevented this form from
          submitting. Please fix these errors and try again.
    

    (输出会略有不同,因为它会包含换行符。但在呈现的 HTML 中你应该不会注意到这一点,除非你在 &lt;pre&gt; 标签内。)

    【讨论】:

    • 甜蜜!我不知道您可以在纯文本中插入 Ruby 代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-09
    • 2013-02-23
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    相关资源
    最近更新 更多