将 * 添加到所需的表单标签

问题描述 投票:0回答:3

有没有人有一种很好的方法可以将 * 添加到所需的表单标签,而不必求助于 SimpleForm 等工具?

我不喜欢 SimpleForm 将所有这些奇怪的包装器和类添加到我的东西中的方式。我认为 SimpleForm 的目的是允许您编写简单的语义形式 ERB(它肯定会这样做) - 但同时不会通过随机添加包装器和类来弄乱您现有的布局。我总是在将表单引入 Rails 之前对其进行样式设计,因此我喜欢告诉它要使用哪些类,而不是相反。

ruby-on-rails forms simple-form
3个回答
32
投票

你不能简单地设计你的标签吗?

您的标签:

<label class="required">MyRequiredField</label>

你的CSS。

label.required:after{content:"*"}

或者我错过了你想要完成的事情?


0
投票

如果您不喜欢他们的解决方案,您可以查看他们如何实施并推出您自己的解决方案:

https://github.com/plataformatec/simple_form/blob/master/lib/simple_form/helpers/required.rb


0
投票

十二年后你好。这是我的解决方案。它可能会错过一些非标准情况,但目前已经足够好了。顺便说一句,我没有使用简单表格。

def label_class(model, field, other_classes)
  # usage example: label_class(MyModel, :title, 'mylabel')
  # will return "mylabel required" if the field is required
  # add to css: label.required:after {content:"*"}
  crit = model.validators.select { |i| i.kind == :presence}.find { |i| i.attributes.include?(field) }
  other_classes + (crit ? ' required' : '')
end
© www.soinside.com 2019 - 2024. All rights reserved.