【问题标题】:Can we change the way Rails writes HTML IDs and such?我们可以改变 Rails 编写 HTML ID 等的方式吗?
【发布时间】:2010-02-26 09:37:27
【问题描述】:
我刚开始查看Wordpress' CSS Architecture 来研究一个已建立且非常强大的系统,可以学习更好的 HTML 习惯。我注意到他们使用所有连字符-(例如post-554),而Rails 使用下划线_(例如post_554)。我想知道 Rails 中是否有一些设置可以自定义,比如ActionView::Template.word_boundary = "-"。
有吗?这并不重要,只是想了解人们为什么会以他们的方式做事。
:)
【问题讨论】:
标签:
html
ruby-on-rails
wordpress
【解决方案1】:
您不能更改 se 分隔符。它被硬编码到 Rails 中。
例如,post_554 是由 dom_id 助手生成的,它在内部依赖于 RecordIdentifier 类。
这是定义。
def dom_id(record, prefix = nil)
if record_id = record.id
"#{dom_class(record, prefix)}#{JOIN}#{record_id}"
else
dom_class(record, prefix || NEW)
end
end
分隔符 JOIN 常量被定义为冻结字符串,因此您无法更改它。
module RecordIdentifier
extend self
JOIN = '_'.freeze
NEW = 'new'.freeze
有两种方法可以改变它:
- 创建自己的助手(建议)
- 用您自己的实现覆盖现有的方法/助手(不建议)
还有一些技术限制可以解释这种选择背后的原因,主要与 Rails 背后的语言有关。
例如,谈论符号
:post_554 # valid symbol
:post-554 # invalid symbol
:"post-554" # valid symbol
使用- 可能需要一种不太干净的Ruby 方法。
就我个人而言,我更喜欢使用- 而不是_,除非严格要求,否则我倾向于避免使用标准的 Rails 助手。