ruby-on-rails - 在 ruby on rails 中,动态 id 不适用于两个词,但可以完美地用于一个词——使用引导程序崩溃
问题描述
我正在研究我项目的设备部分。我已将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
解决方案
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 应该以字母开头。(参考)
所以 camelCase 似乎是一个更好的选择。
id="hello#{device_name.parameterize.underscore.camelize}"
# => helloHeroHonda
推荐阅读
- go - 如何在 Golang 中编写 SCSI 命令(WriteAtomic,Read16)?
- docker - 安装和配置 CI/CD 出现问题
- delphi - 在 Delphi 中销毁表单的正确方法是什么?
- java - 使用java获取一定的XML值
- c# - NLog 不打印来自 aspnet 请求标头的值
- html - 如何跟随前面的数字隐藏选项数据?
- python - Python:如何在(value_min,value_max)上绘制数据
- math - 在数学术语中使用变量自我值进行变量赋值的含义?
- maven - Maven命令在损坏时删除所有本地存储库内容
- makefile - 是否有任何软件可以自动格式化用 Makefile 编写的代码?