我自己写了一个表单的修改验证,为什么验证信息不能提示呢?
我想要的效果
Form的代码
<%=form_tag({:action=>"region_save" , :id=>@region.id}) %> <table class="datatable" width='90%'> <tr bgcolor='#BFBFD2'><td colspan='2' style="valign:middle;"><h2>Region</h2></td></tr> <tr><td>Region Name:</td><td><%= text_field("region","name") %></td></tr> <tr bgcolor='#FFFCDF'><td>Region IP:</td><td><%= text_field("region","ip")%></td></tr> <tr><td colspan='2'><%=submit_tag %></td></tr> </table> </form>
Controller的代码
def region_save region_id=params[:id] region_name=params[:region][:name] region_ip=params[:region][:ip] if (region_id.nil?) region=Region.new() else region=Region.find(region_id) end region[:name]=region_name region[:ip]=region_ip region.save() redirect_to :action => "region_list" end
Model的代码
class Region < ActiveRecord::Base validates_uniqueness_of :name validates_uniqueness_of :ip validates_presence_of :name, :message=>"Please input a name to region." validates_format_of :ip, :with => /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/, :message=>"Please input a right format of ip address." end
问题补充:
我刚才按照night_stalker说的,修改了代码,加上了err_message的输出,怎么还是没有提示信息啊。
代码整理如下:
View部分
<%=form_tag({:action=>"region_save" , :id=>@region.id}) %>
<%= error_messages_for 'region' %>
<table class="datatable" width='90%'>
<tr bgcolor='#BFBFD2'><td colspan='2' style="valign:middle;"><h2>Region</h2></td></tr>
<tr><td>Region Name:</td><td><%= text_field("region","name") %></td></tr>
<tr bgcolor='#FFFCDF'><td>Region IP:</td><td><%= text_field("region","ip")%></td></tr>
<tr><td colspan='2'><%=submit_tag %></td></tr>
</table>
</form>
Controller部分:
输入正确可以保存则跳往region.list,错误则render会form表单
def region_form
@region=nil
if (params.key?(:id)) && !params[:id].nil?
id=params[:id]
@region=Region.find(id)
end
if @region.nil?
@region=Region.new()
end
end
def region_save
region_id=params[:id]
region_name=params[:region][:name]
region_ip=params[:region][:ip]
if (region_id.nil?)
region=Region.new()
else
region=Region.find(region_id)
end
region[:name]=region_name
region[:ip]=region_ip
if region.save()
redirect_to :action => "region_list"
else
flash[:notice]="error"
render :action=> "region_form"
end
end
Model没有变见上图
现在的,问题是
<%= error_messages_for 'region' %>的错误信息没有在页面显示。
之前输入的表单内容也没有。更没有哪个输入错误的红色框。
再帮忙看看吧
问题补充:
如果,修改controller里的跳转
把
flash[:notice]="error"
render :action=> "region_form"
改成
flash[:notice]="error"
redirect_to :action=> "region_form",:id=region_id
表单内容,倒是出来了,flash[:notice]的error也出来了。可是,model的错误信息没有出来,而且,也没有添错的错误框。
怎么看都是最基本的问题,谁给指条明路,从那看起可以解决这个问题啊