在 Slim 中使用 Ruby on Rails 有条件地创建隐藏属性

Posted

技术标签:

【中文标题】在 Slim 中使用 Ruby on Rails 有条件地创建隐藏属性【英文标题】:Conditionally creating a hidden attribute in Slim with Ruby on Rails 【发布时间】:2021-08-02 04:22:42 【问题描述】:

如果条件为真,我正在尝试让 Slim 生成以下 html

<div id="start_button" hidden="hidden">

我尝试了各种方法,比如显而易见的:

#start_button #('hidden="hidden"' if CONDITION?)
     = link_to 'Get Started', ...etc...

但这会产生:

<div id="start_button">hidden="hidden"
= link_to 'Get Started',..etc...

我知道在将类等属性设置为某物时该怎么做,但是因为“隐藏”必须是全有或全无,这给我带来了问题。

今晚我经历了很多兔子洞,因此感谢您的帮助!

【问题讨论】:

【参考方案1】:

这在文档中有说明:

Ruby 属性

在 = 之后直接写 ruby​​ 代码。如果代码包含空格 您必须将代码包装到括号中(...)。你也可以 直接写哈希 ... 和数组 [...]。

因此,() 中的任何内容都被评估为 Ruby 代码,如果该语句被评估为 false,它会以某种方式“跳过”,否则它会执行 true 分支中所述的操作。

#start_button hidden=('hidden' if true)
<div hidden="hidden" id="start_button"></div>

#start_button hidden=('hidden' if false)
<div id="start_button"></div>

【讨论】:

好的,所以我猜它与其他属性相同。我没想到“跳过”位。我认为它会输出&lt;div hidden id="start_button"&gt;&lt;/div&gt;,这不好。现在我明白了。谢谢!

以上是关于在 Slim 中使用 Ruby on Rails 有条件地创建隐藏属性的主要内容,如果未能解决你的问题,请参考以下文章

Ruby Slim - 在 DOM 属性中嵌入 JSON

Ruby on Rails - 如何在 Rails 方法中使用 HTML 坐标?

思考Ruby On Rails的底层代码(Ruby on Rails 開發秘籍 | Ruby on Rails 快速入門)

如何注销 Facebook - 在 Rails 应用程序中使用代码(Ruby on Rails Omniauth)

ruby 在Ruby on Rails中阻止别名

在 Ruby on Rails 中使用 fork 创建并行进程