2013-03-25 3 views
0

При использовании этого я получаю проект по умолчанию для 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 
+1

вы звоните ** ** проверяет дважды, изменить что, как 'validates_presence_of: имя пользователя,: сообщение => "Du СКАЛ udfylde brugernavn"' –

+0

@SagarBommidi 'presence => true' игнорируется. – codeit

ответ

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 
+0

Хмм, это не получилось. Повторите мой вопрос для моего нового кода. – jesper

+0

Да, я тоже это пробовал. Просто показ страницы по умолчанию ruby. – jesper

+0

Удалите '.save!' С конца – codeit

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

+0

Он все равно сломает страницу. – codeit

+0

Используйте способ Codeit для сохранения в вашем контроллере. Вы должны использовать '.save?' В выражении if, если хотите проверить, что сохранение действительно на самом деле. Затем отобразите правильную страницу. – almathie

1

f rom Rails Guide to Validations:

Для проверки того, является ли конкретный атрибут объекта допустимым, вы можете использовать ошибки [: attribute]. Он возвращает массив всех ошибок для атрибута:. Если ошибок в указанном атрибуте нет, возвращается пустой массив.

Так, просто отобразить errors хэш ..