Gos*_*ich 17 customization ruby-on-rails formtastic ruby-on-rails-3 twitter-bootstrap
有没有办法告诉Rails不要div.field_with_errors在标签和实际字段div.error周围创建,而是围绕它们创建?
例如,我在表格中的片段(用HAML编写)
= form_for @user do |f|
%div.clearfix
= f.label :name
%div.input
= f.text_field :name
Run Code Online (Sandbox Code Playgroud)
我希望在错误的情况下根目录div div.clearfix.error并避免这种情况field_with_errors.我可以这样做吗?
作为另一种选择,我可以制作formtastic 来创建Bootstrap -styled元素,没有formtastic的css和html类,但是使用bootstrap的.在使用formtastic的情况下,我可以使用错误字段制作一些东西吗?
小智 17
@sowdelic的答案似乎是最简单的解决方案.但是,名称不正确.这可能是由于Rails/Bootstrap版本,但这对我有用.
/* Rails scaffold style compatibility */
#error_explanation {
@extend .alert;
@extend .alert-error;
@extend .alert-block; /* optional */
}
.field_with_errors {
@extend .control-group.error
}
Run Code Online (Sandbox Code Playgroud)
小智 9
创建config/initializers/field_with_errors.rb:
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
"<div class=\"error\">#{html_tag}</div>".html_safe
end
Run Code Online (Sandbox Code Playgroud)
这将交换.field-with-errors为.error.
然而,我发现“Rails-way”的最大问题是它用一个新元素包装元素,div而不是简单地将类添加到元素本身。我更喜欢这个:
ActionView::Base.field_error_proc = Proc.new do |html_tag, instance|
parts = html_tag.split('>', 2)
parts[0] += ' class="field_with_errors">'
(parts[0] + parts[1]).html_safe
end
Run Code Online (Sandbox Code Playgroud)
如果有人使用LESS:
在bootstrap_and_overrides.css.less中你可以添加:
#error_explanation {
.alert();
.alert-error();
.alert-block();
}
.field_with_errors {
.control-group.error();
}
Run Code Online (Sandbox Code Playgroud)
这是所示sass示例的LESS版本.
当使用https://github.com/anjlab/bootstrap-rails gem 时,这适用于Bootstrap 3 .
.field_with_errors {
@include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
}
Run Code Online (Sandbox Code Playgroud)
它实际上比你想象的更令人恼火。
我最终创建了自己的标签助手(我也需要用于其他目的),尽管我一开始只是覆盖ActionView::Base.field_error_proc. (这本身就是一个故事,因为它传递的是一个字符串,实际上并不是你可以可靠地摆弄的东西:(
但从这里开始,看看它是否足够适合你,否则准备进行一些挖掘和调整。
| 归档时间: |
|
| 查看次数: |
14510 次 |
| 最近记录: |