在 ruby​​ 中编写条件的正确格式,然后使用 HAML 标记内的字符串插值将输出转换为字符串

Posted

技术标签:

【中文标题】在 ruby​​ 中编写条件的正确格式,然后使用 HAML 标记内的字符串插值将输出转换为字符串【英文标题】:Correct format for writing conditionals in ruby and then converting output into string using string interpolation inside HAML tag 【发布时间】:2019-03-22 18:19:06 【问题描述】:

我正在修复项目前端的 ruby​​ on rails 开源项目中的一个错误。我是 ruby​​ on rails、HAML 等的新手。以下代码行给我带来了很多麻烦。

我想知道格式化它的正确方法是什么。此外,有没有办法编写一个辅助函数来将条件转换为函数调用?任何帮助将不胜感激。

我尝试了几种格式,但开发人员希望我将 if-else 分成几行。我无法完成这项工作。

6:       %strong =
7:       "#
8:         - if @enterprise.is_primary_producer
9:           = t('.producer_profile')
10:         - else
11:           = t('.profile')

我希望视图被渲染,但我得到了语法错误。

【问题讨论】:

【参考方案1】:

这样的?

%strong
  - if @enterprise.is_primary_producer
    = t('.producer_profile')
  - else
    = t('.profile')

就个人而言,我会这样做:

- t_key = @enterprise.is_primary_producer ? '.producer_profile' : '.profile'
%strong= t(t_key)

如果你想把它移到一个助手中,只需在 application_helper.rb 中定义它

def some_name_for_the_method(enterprise)
  t_key = enterprise.is_primary_producer ? '.producer_profile' : '.profile'
  I18n.t(t_key)
end

在视图中

%strong= some_name_for_the_method(@enterprise)

【讨论】:

非常感谢。我最终提出了你的第一个建议,但我想知道如何制作你提到的替代方法。感谢您的帮助和教训!

以上是关于在 ruby​​ 中编写条件的正确格式,然后使用 HAML 标记内的字符串插值将输出转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

对于条件语句的程序编写问题

如何在 Ruby 中编写复杂的多行 if 条件?

如何在 Ruby 中有条件地格式化字符串?

Ruby学习-1.学习对象

Ruby/Rails - 正确显示/格式化文本区域表单控件中的文本

如何在打字稿中正确编写有条件的 promise.resolve?