module ApplicationHelper
def error_messages_for(*params)
options = params.last.is_a?(Hash) ? params.pop.symbolize_keys : {}
objects = params.collect {|object_name| instance_variable_get("@#{object_name}") }.compact
count = objects.inject(0) {|sum, object| sum + object.errors.count }
unless count.zero?
html = {}
[:id, :class].each do |key|
if options.include?(key)
value = options[key]
html[key] = value unless value.blank?
else
html[key] = 'errorExplanation'
end
end
header_message = ""#"#{pluralize(count, 'error')} prohibited this #{(options[:object_name] || params.first).to_s.gsub('_', ' ')} from being saved"
#error_messages = objects.map {|object| object.errors.full_messages.map {|msg| content_tag(:li, msg) } }
error_messages = objects.map do |object|
full_messages = []
object.errors.each do |attr,msg|
full_messages << msg unless msg.nil? || msg.blank?
end
full_messages.map{|msg| content_tag(:li,msg)}
end
content_tag(:div,
content_tag(options[:header_tag] || :h2, header_message) <<
content_tag(:p, '发生以下错误:') <<
content_tag(:ul, error_messages),
html
)
else
''
end
end
end
分享到:
相关推荐
在Ruby开发中,ActiveModel是Rails框架的一部分,它提供了一种模型层的接口,使得非ActiveRecord对象也能具有类似于ActiveRecord的行为。这个标题提到的"Ruby-ActiveModel的自定义验证用于检查数组是否包含在另一个...
拥有290,000多个下载量,这是*唯一* gem,可为Rails 5和6提供自定义的400/500异常页面 当前 (2018年8月) :memo: - :warning_selector: - :wrench: - :telephone_selector: - :white_medium_star: :memo: 介绍 ...
record.errors[attribute] (options[:message] || 'is not a valid email') unless value =~ /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i end end class Person validates :email, email: true end ``` #### ...
它甚至提供了一种创建自定义例外应用程序的方法。 易于安装和开发 您不必配置每个人必须要做的事情,Rambulance可以为您做所有事情。 安装及使用 将此行添加到您的应用程序的Gemfile中: gem 'rambulance' 然后...
`password_strength_validator` gem提供了一个现成的解决方案,它可以方便地集成到Rails项目中,无需编写自定义验证器。首先,添加gem到Gemfile,然后运行`bundle install`安装。 ```ruby # Gemfile gem 'password...
**Displaying Errors trapped by the Data Model** 当模型验证失败时,需要在视图中显示错误消息。这通常是通过专门的方法来处理的。 **Creating a Form with minimal coding** 利用 Rails 的辅助方法,可以快速...
例如,你可以使用`better_errors`或`byebug`等调试工具,配合查询日志,更快地找到问题所在。 总之,`Ruby-marginalia`是提升ActiveRecord应用开发效率和可维护性的强大工具,通过在SQL查询中添加注释,它提供了...
7. **自定义处理**:开发者可以通过编写回调函数来对上传的文件进行自定义处理,比如缩略图生成、文件转换等。 8. **错误处理**:Attache具有良好的错误处理机制,当文件上传过程中出现问题时,它能返回清晰的错误...
在传统的Rails应用中,表单处理通常涉及到大量的控制器代码,这不仅让代码变得杂乱,还增加了出错的可能性。Reform引入了Form对象的概念,它是一个单独的类,负责处理表单的验证规则、映射以及与模型之间的交互。...
errors.add(:price, '至少应为0.01') if price.nil? || price end end ``` 这里我们添加了多项验证规则: - `validates_presence_of`:确保作者、标题、描述和图片URL不能为空。 - `validates_numericality_of`...
如果是在Rails框架下工作,可以利用ActiveRecord的验证功能,比如`validates_length_of`、`validates_complexity_of`等。例如: ```ruby class User validates :password, presence: true, length: { minimum: ...
2. **自定义验证**:除了预定义的验证外,开发者还可以创建自定义验证方法,通过添加`validate`或`validate_on_create`等回调来执行特定的验证逻辑。 3. **回调(Callbacks)**:Ruby on Rails中的回调机制允许在...
首先,CAKEPHP借鉴了Ruby on Rails的优点,比如DRY(Don't Repeat Yourself)原则,使得开发者能够快速地构建Web应用程序。它的官方文档和社区资源丰富,官方网站www.cakephp.org是获取资料和最新信息的好去处。 在...
- **Ruby on Rails**:基于Ruby语言的框架,以其优雅简洁的语法和约定优于配置的设计理念著称。 #### 二、Struts2框架技术概述 **2.1 Struts1和Struts2的对比** Struts1与Struts2的主要区别在于: - **请求处理...
7. **扩展方法**:由于哈希模型本质上还是一个哈希,所以可以利用哈希的所有方法,如`fetch`、`merge`等,同时也可以自定义方法以扩展功能。 总结起来,哈希模型与ActiveModel 3.x的结合为Ruby开发带来了极大的便利...
Maru是一款轻量级且强大的Web开发库,它提供了类似于Ruby on Rails的路由和参数处理功能,但更加简洁和灵活。 首先,让我们理解什么是Maru。Maru是由Elixir社区开发的一个HTTP服务器框架,它允许开发者以模块化的...