Почему мои рельсы простой проверки не работает - PullRequest
1 голос
/ 26 января 2010

У меня очень простое приложение для рельсов. Я играю с проверкой.

Контроллер

class PagesController < ApplicationController
  def new
    @user = User.new
  end
  def edit
    @user = User.new(:state => params[:state], :country => params[:country])
    @user.save
  end
end

Модель

class User < ActiveRecord::Base
    validates_presence_of :country
    validates_presence_of :state
end

Views / страницы / edit.html.erb

<% form_for :user, @user, :url => { :action => "edit" } do |f| %>
  <%= f.text_field :country %>
  <%= f.text_field :state %>
  <%= submit_tag 'Create' %>
<% end %>

Все, что я хочу сделать, - это нажать «Создать», когда я ничего не ввел, а затем подойти к проверке и перечислить обязательные поля. Я прочитал некоторые уроки, и они делают это так просто. Почему я не могу заставить это работать? Что я делаю неправильно? Когда я создаю скаффолд, он работает нормально, но это генерирует scaffold.css в public / stylesheets. Без лесов сейчас у меня нет таблицы стилей в общей папке.

1 Ответ

2 голосов
/ 26 января 2010

вы отправляете форму в действие «редактировать», которое не выполняет никакой обработки. Вам нужно перейти к действию «создать», которое должно выглядеть примерно так:

def create
  @user = User.new(params[:user])

  if @user.save
    flash[:notice] = 'Your user was successfully created.'
    redirect_to users_path
  else
    render :action => 'edit'
  end
end

Ваша строка form_for может быть короткой и приятной. Также вам нужно вызвать error_messages, чтобы получить автоматически сгенерированный список ошибок:

<% form_for @user do |f| %>
  <%= f.error_messages %>
  ...other fields go here...
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...