虽然我知道这样做本身就不科学,但又不知道正确的做法,于是只好这样凑合来。
现在的问题是如果我留空提交,只会出来Rails的报错页面,而不会出现我写的<%= error_messages_for "xxx" %>这样的结果。
请问到底应该怎样做呢?
ROR里,一个页面校验另一个模型中字段的值怎么弄啊?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- horace_lee 2009-04-27 21:05关注
虽然,不是太懂你的问题。 :wink:
但是,我可以在一个view里,点击一次提交,验证两个model的属性。当然,提交的form也得,是写到两个model里了。
不能同时提示错误信息,但都能提示,效果如下:
[img]/upload/attachment/98394/ad07ae1a-c493-31a4-85f6-90251059023c.png[/img]
[img]/upload/attachment/98398/815131ca-13bf-3b8c-8fae-3deb0d9e9fc3.png[/img]
相关代码如下:
view:
[code="ruby"]<%= error_messages_for 'product' %>
<%= error_messages_for 'user' %>Title
Name:
<%= text_field 'user', 'name' %>Description
Image url
Price
<!--[eoform:product]-->[/code]
外层:
[code="ruby"]<% form_tag :action => 'create' do %>
<%= render :partial => 'form' %>
<%= submit_tag "Create" %>
<% end %>[/code]conroller:
[code="ruby"] def create
@user = User.new(params[:user])
@product = Product.new(params[:product])
if @product.save && @user.save #这里有逻辑错误,如果product成功,user失败,product会保存。这部分留给你吧,毕竟你的问题不是这个。
flash[:notice] = 'Product was successfully created.'
redirect_to :action => 'list'
else
render :action => 'new'
end
end[/code]model:
[code="ruby"]
class User < ActiveRecord::Basevalidates_presence_of :name
validates_uniqueness_of :nameattr_accessor :password_confirmation
validates_confirmation_of :password#....
class Product < ActiveRecord::Base
has_many :orders, :through => :line_items
has_many :line_items
def self.find_products_for_sale
find(:all, :order => "title")
endvalidates_presence_of :title, :description, :image_url
[/code]
希望有帮助吧本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 win11修改中文用户名路径
- ¥15 win2012磁盘空间不足,c盘正常,d盘无法写入
- ¥15 用土力学知识进行土坡稳定性分析与挡土墙设计
- ¥70 PlayWright在Java上连接CDP关联本地Chrome启动失败,貌似是Windows端口转发问题
- ¥15 帮我写一个c++工程
- ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
- ¥15 关于smbclient 库的使用
- ¥15 微信小程序协议怎么写
- ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
- ¥20 怎么用dlib库的算法识别小麦病虫害