【问题标题】: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
    

    有两种方法可以改变它:

    1. 创建自己的助手(建议)
    2. 用您自己的实现覆盖现有的方法/助手(不建议)

    还有一些技术限制可以解释这种选择背后的原因,主要与 Rails 背后的语言有关。

    例如,谈论符号

    :post_554   # valid symbol
    :post-554   # invalid symbol
    :"post-554" # valid symbol
    

    使用- 可能需要一种不太干净的Ruby 方法。

    就我个人而言,我更喜欢使用- 而不是_,除非严格要求,否则我倾向于避免使用标准的 Rails 助手。

    【讨论】: