显示错误而不是ruby默认值?

时间:2013-03-25 17:05:53

标签: ruby-on-rails ruby ruby-on-rails-3

使用它时,我得到Ruby on Rails enter image description here的默认设计。如何在我当前的设计中将其打印为常规文本,如<%= error.text %>

型号:

class Users < ActiveRecord::Base
  validates_presence_of :username, :message => "Du skal udfylde brugernavn"
  attr_accessible :email, :password, :username
end

控制器:

class HomeController < ApplicationController
  def index

     if params[:username]
         l = Users.new(:username => params[:username], :password => params[:password], :email => params[:email]).save!

         if Users.save? 
                z = Users.where(:username => params[:username]).limit(1).last
                @debugging="Yay"
         else
                @debugging = user.errors.full_messages.join("<br/>")
         end             
     end
   end
 end

3 个答案:

答案 0 :(得分:1)

your_object.errors返回一个关联数组:{:username => "Du skal udfylde brugernavn"}

所以你可以这样做:

<%= user.errors[:username] %>

在此处查看有关如何使用此视图的更多信息(官方Ruby on Rails文档): http://guides.rubyonrails.org/active_record_validations_callbacks.html#working-with-validation-errors

答案 1 :(得分:1)

来自Rails Guide to Validations

  

要验证对象的特定属性是否有效,可以使用errors [:attribute]。它返回:属性的所有错误的数组。如果指定的属性没有错误,则返回一个空数组。

所以,只显示errors哈希..

答案 2 :(得分:0)

在模型中:

validates_presence_of :username, :message => "Du skal udfylde brugernavn"

在控制器中:

if user.save
   flash[:success] = 'User saved successfully'
else
   flash[:error] = user.errors.full_messages.join('<br />')
end

修改

不是if Users.save?它应该是l.save。 (我建议你使用User作为模型)

if params[:username]
   l = Users.new(:username => params[:username], :password => params[:password], :email => params[:email])

   if l.save 
      z = Users.where(:username => params[:username]).limit(1).last
      @debugging="Yay"
   else
      @debugging = l.errors.full_messages.join("<br/>")
   end
end