在 ruby​​ on rails 动态 id 不能用于两个词,但可以完美地用于一个词——使用引导程序崩溃

Posted

技术标签:

【中文标题】在 ruby​​ on rails 动态 id 不能用于两个词,但可以完美地用于一个词——使用引导程序崩溃【英文标题】:In ruby on rails Dynamic id isn't working for two words but worked perfectly for one word --used bootstrap collapse 【发布时间】:2021-10-11 19:17:03 【问题描述】:

我正在处理我项目的设备部分。我已将brandname 分组并将品牌名称作为id 传递。我的问题是动态 id 不适用于两个词,例如。 Hero Honda 但完美地为一个词工作,例如。 Yamaha

我的控制器的代码是:

  def index
    @devices = Device.all.group_by(&:brandname)
    @device = current_user.devices.build
  end

这是我的观点代码

 button.btn.btn-sm.btn-outline-info aria-controls="12" aria-expanded="false" data-target="#hello#device_name" data-toggle="collapse" type="button" 
          | Details
    .collapse.container.mx-5 id="hello#device_name"
          .container.bg-light 
            .row.bg-secondary.p-2.my-2
                .col-3.col-md-3.text-center MAC address
                .col-2.col-md-2.text-center Serial Number
                .col-2.col-md-2.text-center Software
                .col-2.col-md-2.text-center  Number
                .col-1.col-md-1.text-center  Status
              
                           
            - device_data.each do |device|
              .row.py-2
                    .col-3.text-center = device.macaddress
                    .col-2.text-center = device.serialnumber
                    .col-2.text-center = device.softwareversion
                    .col-2.text-center = device.IMEInumber
                    .col-1.text-center = device.status
                    .col-2.text-center = device.id 

Here I present the console of browser how program takes dynamic id.

【问题讨论】:

【参考方案1】:

html id 标签不能有空格。因此,我建议您首先转换您的 brandname 以使其不包含空格。例如:您可以将您的空间转换为-_

id="hello-#device_name.parameterize"
# => hello-hero-honda

id="hello_#device_name.parameterize.underscore"
# => hello_hero_honda

注意:使用除 ASCII 字母、数字、'_'、'-' 和 '.' 以外的字符可能会导致兼容性问题,因为它们在 HTML 4 中是不允许的。尽管在 HTML5 中取消了此限制,但为了兼容性,ID 应该以字母开头。 (Ref)

所以 camelCase 似乎是一个更好的选择。

id="hello#device_name.parameterize.underscore.camelize"
# => helloHeroHonda

【讨论】:

以上是关于在 ruby​​ on rails 动态 id 不能用于两个词,但可以完美地用于一个词——使用引导程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Ruby on Rails 4 中为 post 生成唯一的随机 id?

推荐 7 款最好的 Ruby on Rails 集成开发环境

如何在 ruby​​ on rails 中命名外键?

Ruby on Rails 使用视图助手中的变量在视图中动态生成字段名称

在 Ruby on Rails 中自动增加非主键字段

在 ruby​​ on rails 中创建新表