浏览 426 次
|
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2008-05-12
Web敏捷开发第10章的例子...怎么验证不提示错误呢?
有一个模型
class Order < ActiveRecord::Base
has_many :line_items
validates_presence_of :name
validates_presence_of :address
validates_presence_of :email
validates_presence_of :pay_type
PAYMENT_TYPES =[
["Check","check"],
["Credit card","cc"],
["Purchase order","po"]
]
def add_line_items_from_cart cart
cart.items.each do |item|
li = LineItem.from_cart_item(item)
line_items << li
end
end
end
有一个控制器
#准备结账
def checkout
@cart = find_cart
if @cart.items.empty?
redirect_to_index("您没有选择任何商品")
else
@roder = Order.new
end
end
#结账
def save_order
@cart = find_cart
@order = Order.new(params[:order])
@order.add_line_items_from_cart(@cart)
if @order.save
session[:cart] = nil
redirect_to_index("订单提交成功!")
else
redirect_to :action => :checkout
end
end
有一个rhtml
<% form_for :order , :url => {:action => :save_order} do |form| %>
<p>
<label for="order_name">姓名:</label>
<%= form.text_field :name,:size => 40 %>
</p>
<p>
<label for="order_address">地址:</label>
<%= form.text_area :address,:rows => 3,:cols => 40 %>
</p>
<p>
<label for="order_email">Email:</label>
<%= form.text_field :email,:size => 40 %>
</p>
<p>
<label for="order_pay_type">姓名:</label>
<%= form.select :pay_type,Order::PAYMENT_TYPES,:prompt => "选择结账方式" %>
</p>
<%= submit_tag("结账", :class => "submit") %>
<%end%>
通过checkout创建表单,同时创建的order对象.表单提交以后.各个属性被正确的赋值了,在@order.save执行失败以后正常转回了checkout方法..但是validates_presence_of验证失败的错误却没有提示出来..实在是没发现代码上的问题...麻烦各位帮忙看看吧. 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2008-05-13
<%= error_messages_for 'order' %> |
|
| 返回顶楼 | |
|
时间:2008-05-13
<div class="depot-form">
<%= error_messages_for 'order' %> <fieldset> <legend>请填写详细信息</legend> <% form_for :order , :url => {:action => :save_order} do |form| %> <p> <label for="order_name">姓名:</label> <%= form.text_field :name,:size => 40 %> </p> <p> <label for="order_address">地址:</label> <%= form.text_area :address,:rows => 3,:cols => 40 %> </p> <p> <label for="order_email">Email:</label> <%= form.text_field :email,:size => 40 %> </p> <p> <label for="order_pay_type">姓名:</label> <%= form.select :pay_type,Order::PAYMENT_TYPES,:prompt => "选择结账方式" %> </p> <%= submit_tag("结账", :class => "submit") %> <%end%> </fieldset> </div> 有的~~~~~~~~~~` |
|
| 返回顶楼 | |
|
时间:2008-05-14
出错了以后不要redirect,要直接render,否则携带错误信息的对象就消失了
|
|
| 返回顶楼 | |
|
时间:2008-05-14
花花公子 写道 出错了以后不要redirect,要直接render,否则携带错误信息的对象就消失了 正解。如果要显示错误信息的话,应该用render而不是redirect_to。 |
|
| 返回顶楼 | |
|
时间:2008-05-16
谢谢解答.问题解决了.确实是redirect的问题..换了render就好了!
|
|
| 返回顶楼 | |






