gpt4 book ai didi

ruby-on-rails - Rails没有生成验证失败消息

转载 作者:行者123 更新时间:2023-12-03 16:12:07 25 4
gpt4 key购买 nike

我的模型中有许多标准的Rails验证:

validates_presence_of :url_string
validates_uniqueness_of :url_string
validates_presence_of :stream_source
validates_presence_of :width
validates_presence_of :height
validates_presence_of :name
validates_uniqueness_of :name
validates_presence_of :customer_name
validates_presence_of :iframe_background_color

如果我没有在表单中填写这些字段之一,那么我将按预期返回表单,但奇怪的是没有错误消息显示。我正在使用下面的代码来显示错误消息:
<% @camera.errors.full_messages.each do |error| %>
<p><%= error %></p>
<% end %

我还尝试打印出@ camera.errors对象,结果如下所示:
#<ActiveModel::Errors:0x12db19bc @base=#<Camera id: 1, stream_source: "test", width: 640, height: 360, active: true, name: "test", url_string: "CAYD19Vp", customer_name: "test", iframe_background_color: "#FFFFFF", online: true, created_at: "2011-08-30 15:54:16", updated_at: "2011-09-06 15:52:48", audio: true, iframe_text_color: "#FF00FF", iframe_link_color: "#FF0000", notes: "Some notes!", offline_image_file_name: "Cake.jpg", offline_image_content_type: "image/jpeg", offline_image_file_size: 196591, offline_image_updated_at: "2011-09-06 12:12:38", pull_stream_url: "test", bitrate: "300-500", show_branding: false>, @messages={}>
#

如您所见,消息哈希为空。我尝试通过执行以下操作手动设置验证错误消息:
validates_presence_of :name, :message => "No name present" 

但它也没有填充邮件哈希。

Controller 更新操作如下所示:
def update
@camera = Camera.find(params[:id])
if @camera.update_attributes(params[:camera])
flash[:notice] = "Camera updated"
redirect_to nwcadmin_camera_path
else
redirect_to :action => :edit
end
end

我正在使用Ruby版本的ruby 1.9.2p290和Rails版本3.1.0。

任何帮助将是巨大的!

谢谢

最佳答案

请注意,当您具有Validation failed (ActiveRecord::RecordInvalid)声明并且其中任何一个返回before_validation时,您将得到一个带有空错误消息的false错误(如果没有其他错误)。

请注意,before_validation回调不得返回false(nil可以),这可能是偶然发生的,例如,如果您将false分配给该回调方法内最后一行的 bool 值属性。在回调方法中显式编写return true以使此工作有效(或者,如果您的回调是一个块,则在末尾才返回true(如here所述))。

更新:从Rails 5.0开始,这不再是问题,因为return false不再停止回调链(throw :abort现在将停止回调链)。

更新:如果回调返回ActiveRecord::RecordNotSaved: Failed to save the record,您也可能会收到false

关于ruby-on-rails - Rails没有生成验证失败消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7322992/

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