gpt4 book ai didi

ruby-on-rails - Rails 验证和 'fieldWithErrors' 包装选择标签

转载 作者:行者123 更新时间:2023-12-04 14:07:56 24 4
gpt4 key购买 nike

没有得到 <div class="fieldWithErrors"> 是正常行为吗?环绕选择有验证错误的标签?我个人认为没有理由将选择标签与其他表单标签(输入、文本区域)区别对待。

我确实收到了 error_messages_for 中的错误和 error_message_on该领域的方法。

附注。我对 ActionView::Base.field_error_proc 做了一点改动为了获得 span 标签而不是 div,但这不是问题。

ActionView::Base.field_error_proc = Proc.new { |html_tag, instance|
#if I puts html_tag here I only get the <input> tags
"<span class=\"fieldWithErrors\">#{html_tag}</span>"
}

最佳答案

问题(至少对我而言)是我的 f.select :whatever_id正在看object.errors :whatever_id 键的对象当我的验证实际上是在 :whatever 上时,不是 :whatever_id .

我通过更改解决了这个烦人的问题

object.errors.on(@method_name)


object.errors.on(@method_name) || object.errors.on(@method_name.gsub(/_id$/, ''))

这是差异(针对 Rails 2.3.4):
diff --git a/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb b/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb
index 541899e..5d5b27e 100644
--- a/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb
+++ b/vendor/rails/actionpack/lib/action_view/helpers/active_record_helper.rb
@@ -247,7 +247,7 @@ module ActionView
alias_method :tag_without_error_wrapping, :tag
def tag(name, options)
if object.respond_to?(:errors) && object.errors.respond_to?(:on)
- error_wrapping(tag_without_error_wrapping(name, options), object.errors.on(@method_name))
+ error_wrapping(tag_without_error_wrapping(name, options), object.errors.on(@method_name) || object.errors.on(@method_name.gsub(/_id$/, '')))
else
tag_without_error_wrapping(name, options)
end
@@ -256,7 +256,7 @@ module ActionView
alias_method :content_tag_without_error_wrapping, :content_tag
def content_tag(name, value, options)
if object.respond_to?(:errors) && object.errors.respond_to?(:on)
- error_wrapping(content_tag_without_error_wrapping(name, value, options), object.errors.on(@method_name))
+ error_wrapping(content_tag_without_error_wrapping(name, value, options), object.errors.on(@method_name) || object.errors.on(@method_name.gsub(/_id$/, '')))
else
content_tag_without_error_wrapping(name, value, options)
end

关于ruby-on-rails - Rails 验证和 'fieldWithErrors' 包装选择标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/747220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com