我有一个非常基本的rails应用程序。我正在玩验证。
控制器
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
查看/页/ edit.html.erb
<% form_for :user, @user, :url => { :action => "edit" } do |f| %>
<%= f.text_field :country %>
<%= f.text_field :state %>
<%= submit_tag 'Create' %>
<% end %>
我想要做的就是在我没有输入任何内容时单击“创建”,然后进行验证并列出必填字段。我已经阅读了一些教程,它们使它变得如此简单。为什么我不能让这个工作?我究竟做错了什么?当我创建一个脚手架然后它工作正常,但在public / stylesheets中生成scaffold.css。 W / out脚手架现在我在公共文件夹中没有样式表。
答案 0 :(得分:2)
您将表单发送到“编辑”操作,该操作不会进行任何处理。你需要它来进行“创建”动作,它应该是这样的:
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 %>