【问题标题】:Rails validates_presence_of not working with HTML form text areaRails validates_presence_of 不适用于 HTML 表单文本区域
【发布时间】:2011-04-06 02:32:20
【问题描述】:

环境:带有 MySQL 5.0 的 Rails 2.3.11

这是我的幻灯片模型:

class Slideshow < ActiveRecord::Base
  validates_presence_of :title, :description
end

使用控制台,如果我运行:

Slideshow.new(:title => "", :description => "").save!

它返回:

Validation failed: Title can't be blank, Description can't be blank

这是正确的。

但是,当我向创建操作提交一个空白 HTML 表单时:

def create
  @slideshow = Slideshow.new(params[:slideshow])
  if @slideshow.save
    redirect_to(...)
  else
    render(:action => 'new')
  end
end

只有:title 字段验证失败。我已经验证了参数中传递的内容是:

Parameters: {"commit"=>"Submit", "slideshow"=>{"title"=>"", "description"=>""}, "action"=>"create", "controller"=>"manage/slideshows"}

为什么描述字段在这里没有通过验证?

谢谢。

【问题讨论】:

  • 你如何显示你的验证错误??
  • 表单发布后,我使用的是f.error_messages

标签: html ruby-on-rails validation forms model


【解决方案1】:

试试这个:

validates_length_of :description

更多详情...http://apidock.com/rails/ActiveRecord/Validations/ClassMethods/validates_length_of

【讨论】:

    【解决方案2】:

    当您向创建操作提交一个空白 HTML 表单时,它应该进入创建操作的 else 并且您的表单应该有以下行:

    向您显示错误。

    【讨论】:

    • 我在那里使用f.error_messages。发布空白表单后,出现的唯一错误消息是“标题不能为空”。
    • 表示验证适用于其他字段。你能显示你把验证放在哪里吗?或者和我分享你的项目文件夹。
    【解决方案3】:

    这原来是一个语法问题。它发生在测试服务器上,其中有两个名称非常相似的模型(一个是另一个的更新版本)。在测试期间,我使用了错误的。对于任何不必要的抓挠,我深表歉意:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-18
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      相关资源
      最近更新 更多