如何在 HAML 中执行 if/else 而不重复缩进代码

2024-02-18

根据用户是否登录,我想打印不同类型的%body标签。

这就是我目前的做法:

- if defined? @user
  %body(data-account="#{@user.account}")
    %h1 Welcome
    -# all my content
- else
  %body
    %h1 Welcome
    -# all my content

正如您所看到的,其中有很多重复的代码。我怎样才能消除这个问题?我已经尝试过以下操作:

- if defined? @user
  %body(data-account="#{@user.account}")
- else
  %body
  %h1 Welcome
  -# all my content

不幸的是,这不起作用,因为 HAML 将其解释为 %h1 和内容是 else 语句的一部分,当然它们不是。

关于如何解决这个问题有什么想法吗?我一直遇到这个问题,所以我无法想象没有一个简单的解决方案。


我认为您无法避免缩进问题,因为 HAML 自动分配“end”语句的方式,但您可以将 if 语句推入 body 标记本身 -

%body{:data_account => (defined? @user ? @user.account : nil)}

相对于

%body(data-account="#{@user.account}")

不是超级漂亮,但比重复整个块要丑一点!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 HAML 中执行 if/else 而不重复缩进代码 的相关文章

  • Ruby 中的关键字在哪里定义?

    我正在查看 Ruby 文档 想知道是否一切都是对象 那么 关键字 也是对象 对吗 如果是这样 它们在 ruby 中是在哪里定义的 下面的页面完全让我困惑 因为它显示了包含所有关键字的对象 但这不是所有类使用的官方对象 这是否以某种方式来自不
  • 在 Rails 中强制内联渲染 PDF 文档

    我正在编写一个从一组 XML 文件生成 PDF 文件的服务 正在正确生成 PDF 但是 每次我单击 查看 PDF 链接时 浏览器都会要求用户下载 PDF 文件 我需要 PDF 内联显示 就像任何常规 HTML 页面一样 我虽然我写的代码是正
  • 使用 google-drive-ruby gem 在 google 云端硬盘中创建文件夹

    我知道这里提出了类似的问题 但是我仍然无法完成这项工作 因为我的情况有点不同 我希望能够使用以下命令在谷歌驱动器中创建一个文件夹谷歌驱动器红宝石宝石 https github com gimite google drive ruby 根据谷
  • 开始使用 Ruby、Watir 和 Ruby Mine?

    我想对电子商务网站进行自动化测试 我安装了 Ruby Watir Gems 和 Ruby Mine 虽然我尝试过 RubyMine 但我不知道如何开始编写一个简单的脚本 如何开始使用 RubyMine 编写简单的脚本 我创建了一个项目 你下
  • 如何在 Ruby 中使用 Safari 技术预览设置 Capybara

    我无法使用 Capybara 和 Selenium 与 Safari 技术预览版 STP 建立会话 Capybara 甚至不会打开浏览器窗口 我已升级到 Ruby 2 3 0 Capybara 2 14 2 Selenium 3 4 0我从
  • i18n:特定型号的错误消息本地化

    我可以为每个验证本地化错误消息 但如何为特定模型创建错误 普通的语言环境如下所示 en mongoid errors messages taken It is already taken 但我想更改消息user model en mongo
  • 如何在Windows 7上运行Ruby程序?

    有谁知道如何在 Windows 7 上运行 编译 Ruby 程序 例如 你可以在 Eclipse 中编译 Java 但我似乎找不到 Ruby 的编译器 http rubyinstaller org http rubyinstaller or
  • 在 Rails 中,我可以通过委托方法订购查询吗?

    我在通过委托方法订购查询时遇到困难 我的任务是帮助将一个相当大的 Rails 3 应用程序升级到 Rails 4 我在索引操作中遇到了这个查询 我知道这些对象的命名是可怕且令人困惑的 measurements controller rb d
  • Jekyll 站点仅在推送到 GitHub 时才会失败

    我正在使用 Jekyll 开发一个新版本的静态网站 该网站通过 Github 页面部署 https devcampy com https devcampy com 存储库 https github com gianarb devcampy
  • 如何将字符串拆分为新行并保留空白行?

    给出 ruby 代码 aaaa nbbbb n n split n 这输出 aaaa bbbb 我希望输出包含由 n n 我想要的结果是 aaaa bbbb 获得这个确切结果的最简单 最好的方法是什么 我建议使用lines代替split为了
  • 即使使用 rvm pkg install zlib 后也无法加载此类文件 -- zlib

    我使用 rvm 安装了 zlib 包和 ruby 1 9 3 但是每当我尝试安装时 它说宝石cannot load such file zlib 我用来安装的命令是 rvm install 1 9 3 rvm pkg install zli
  • 从模块中获取类名

    如何从模块中获取该模块包含的类的类名 module ActMethods def some method attr names cls self class this doesn t work end end 如何进入 cls 变量 加载此
  • ActiveRecord 嵌套 SELECT——我可以在没有手动 SQL 的情况下完成它吗?

    我有一张桌子 上面有 除其他外 一个名字和一个等级 我想返回所有唯一名称的集合 但对于返回的每个名称 我想选择排名最高的行 这很简单 有两个嵌套的 SELECT 语句 SELECT FROM SELECT FROM foo ORDER BY
  • 处理rails应用程序中的rack_throttle异常

    当超出速率限制时 如何处理由rack throttle gem 生成的错误 现在我只收到包含以下内容的回复 Internal Server Error undefined method each for 403 Forbidden Rate
  • 使用 Ruby 中的 Turn_left 方法更改朝向

    我需要创建一个方法turn left来改变朝向 朝向总是从 南开始 我正在实现一个移动到木板上的机器人 所以如果我调用方法turn left应该将朝向改变为东 然后为北 然后为西 然后返回南方 我在想这样的事情 0 S 1 E 2 N 3
  • 在 Rails 中的帖子中添加“喜欢/不喜欢”按钮

    该网站是一个简单的社区 每个用户都会创建帖子 并且用户可能 喜欢 它们或 不喜欢 它们 我有一个 发帖 和 点赞 模型 目前 我通过 post likes size 列出了所有帖子以及每个帖子的点赞大小 喜欢帖子的按钮也可以使用 我不知道该
  • 什么决定了可变类上的 bang 方法是否返回“nil”?

    通常 可变类上的 bang 方法 例如String Array or Hash return nil当没有进行任何修改时 但一些Array爆炸方法 即collect map reverse rotate shuffle sort sort
  • 我可以在 render.js 上执行的视图中使用 CoffeeScript 吗?

    我需要做什么才能在 Rails JS 视图中使用 CoffeeScript 例如 def index format js render layout gt false end 我需要做什么才能让 Rails 使用index js coffe
  • 在运行时在 Rails 中向模型添加列(无需附加表)

    我试图让我的网络应用程序的管理员能够向模型添加一些新字段 该模型称为 Artwork 我想在运行时添加一个 test column 列 我只是在测试 所以我添加了一个简单的链接来做到这一点 它当然是参数化的 我设法通过迁移来做到这一点 de
  • 正则表达式匹配组,但组成员除外

    因此 有许多正则表达式可以匹配特定的组 如下所示 Any character except a newline m Any character the m modifier enables multiline mode w A word c

随机推荐

  • MySQL:按块检索大选择

    我已经选择了更多 7000 万行 我想将选定的数据保存到一个大的csv文件于win2012 R2 问 如何从 MySQL 中按块检索数据以获得更好的性能 因为当我尝试保存一个我得到的大选择时 内存不足错误 您可以尝试使用LIMIT特征 如果
  • 存储和检索 SHA-256 散列和加盐密码的正确方法

    这是我第一次尝试安全地存储密码 我想确保一切都正确完成 建议我将 SHA 256 哈希与 salt 一起使用 假设用户通过表单提交了密码 我们通过以下方式获取密码 password POST password 对 password 加盐并对
  • ASP.NET MVC 和 IIS 5

    让 ASP NET MVC 应用程序托管在 IIS 5 6 或 7 上运行的最佳方法是什么 当我尝试发布 ASP NET MVC 应用程序时 我收到的似乎只是 404 错误 我做了一些谷歌搜索并找到了一些解决方案 但看起来都不是超级优雅 而
  • 如何从 Jena API Eclipse 项目启动 Fuseki 服务器?

    您好 我也是语义 Web 域和 Apache Jena 环境的新手 这就是我发布此问题的原因 我有一个使用 Jena API 的项目 当我运行它时 它会在控制台中显示输出 我确实从命令行运行了 Fuseki 服务器 它作为本地服务器运行 我
  • 运行 crontab 时出现权限被拒绝错误[重复]

    这个问题在这里已经有答案了 我在文件夹 csv file 中创建了一个 r 脚本 marc Marc Linux csv file ls 8388 26580527145 csv csv file Rproj excel source wr
  • Spark Dataframes UPSERT 到 Postgres 表

    我正在使用 Apache Spark DataFrames 来连接两个数据源并将结果作为另一个 DataFrame 获取 我想将结果写入另一个 Postgres 表 我看到这个选项 myDataFrame write jdbc url ta
  • Postman - 使用密钥文件进行 JWT 身份验证

    我正在尝试使用 Postman 来测试在 Google Cloud Platform 上开发的 API API 端点后面的 App Engine 我有 JSON 格式的密钥文件 type service account project id
  • BlackBerry 是否支持其应用程序开发人员的演示/测试版?

    我有兴趣为 BlackBerry 设备开发应用程序 想知道他们是否支持应用程序开发人员的演示版或测试版概念 我的意思是能够将我的应用程序的测试版或演示版部署给有限 受限的受众 例如业务合作伙伴 客户 外部测试人员等 他们中没有任何内容测试和
  • ASP.NET MVC - 如何抛出类似于 StackOverflow 上的 404 页面

    我目前有一个继承自的 BaseController 类System Web Mvc Controller 在那堂课上我有HandleError将用户重定向到 500 哎呀 我们搞砸了 页面的属性 目前这正在按预期进行 这有效
  • 让标签参与控制选项卡

    我有继承自的自定义控件Label并且有ControlStyle Selectable set to true 当用户单击该控件时 该控件将获得焦点 但如果用户从另一个控件进行选项卡 则不会获得焦点 即使当我有一个仅由该类型的控件填充的表单时
  • Reactjs 光滑的幻灯片

    我正在使用reactjs制作一个非常简单的滑块reactstrap 引导程序 工作示例 https codesandbox io s compassionate brook fz5mm https codesandbox io s comp
  • 尝试找出从 Firestore 字典中删除元素的更好方法

    我在应用程序中使用 Firestore 并且有一个名为 投票 的地图字段 用于显示用户的赞成票或反对票 它看起来像这样 我想添加一个选项来从那里删除元素 这就是我现在得到的 getting the user s votes dictiona
  • 将光标后的文本移动到新行

    我是 Vim 新手 我在 OSX Snow Leopard 上使用 MacVim 我必须采取的最常见操作之一是将光标移动到新行 并将光标后面的文本移动到新行 我知道在正常或可视模式下按 o 会将光标移动到新行并切换模式以进行插入 我想做的是
  • 注入和资源以及自动装配注释

    有什么区别 Inject and Resource and Autowired注释 我们什么时候应该使用它们 Inject Autowire Resource 之间的区别 自动连线 spring propriety 注解 与 Inject
  • 清除 Coldfusion 生产服务器中的缓存

    我正在使用 CFMX 并且存在一个问题 变量 yy 在 yyfiling 中未定义 这是生产中的一个问题 我正在推动对其进行更正 但它们似乎没有出现在服务器上 我想清除服务器缓存 以便我升级的代码可以生效 CFAdmin 生产模板已被缓存
  • 如何使用 protobuf-net 序列化/反序列化大型项目列表

    我有大约 5 亿个项目的清单 如果我序列化单个项目而不是列表 我可以将其序列化为带有 protobuf net 文件的文件 我无法将项目收集到价格列表中然后序列化 因为我耗尽了内存 因此 我必须一次序列化一条记录 using var inp
  • 为什么 Finalize() 仅在创建新对象后执行,而不是在调用 gc() 后执行?

    调用 gc 时 finalize 不应该立即执行吗 输出结果的顺序有点不太令人信服 class Test int x 100 int y 115 protected void finalize System out println Reso
  • 我可以在Asp.Net中访问另一个页面中一个页面的ViewState吗?

    有没有办法在另一个页面中访问一个页面的视图状态 请详细说明答案以消除我的疑虑 因为我认为 ViewState 的范围仅限于页面 无法在页面外部访问 您无法直接从一个页面访问另一个页面的 ViewState 如果要访问特定的 ViewStat
  • 如何在 HttpWebRequest 中混合压缩和缓存?

    我有一个 C 客户端与 Cherrypy http rest Web 服务通信 问题是我无法同时打开压缩和缓存 request AutomaticDecompression DecompressionMethods GZip Decompr
  • 如何在 HAML 中执行 if/else 而不重复缩进代码

    根据用户是否登录 我想打印不同类型的 body标签 这就是我目前的做法 if defined user body data account user account h1 Welcome all my content else body h