有没有人有一种很好的方法可以将 * 添加到所需的表单标签,而不必求助于 SimpleForm 等工具?
我不喜欢 SimpleForm 将所有这些奇怪的包装器和类添加到我的东西中的方式。我认为 SimpleForm 的目的是允许您编写简单的语义形式 ERB(它肯定会这样做) - 但同时不会通过随机添加包装器和类来弄乱您现有的布局。我总是在将表单引入 Rails 之前对其进行样式设计,因此我喜欢告诉它要使用哪些类,而不是相反。
你不能简单地设计你的标签吗?
您的标签:
<label class="required">MyRequiredField</label>
你的CSS。
label.required:after{content:"*"}
或者我错过了你想要完成的事情?
如果您不喜欢他们的解决方案,您可以查看他们如何实施并推出您自己的解决方案:
https://github.com/plataformatec/simple_form/blob/master/lib/simple_form/helpers/required.rb
十二年后你好。这是我的解决方案。它可能会错过一些非标准情况,但目前已经足够好了。顺便说一句,我没有使用简单表格。
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