2009-05-04 196 views
0

我正在寻找做jQuery的一些Ajax表单验证。一切都在的地方,我可以在一个JSON对象,看起来像这样回报我的错误:Rails jquery ajax表单验证

errors => { 
"first_name": "cannot be blank", 
"password": "cannot be blank", 
"last_name": "cannot be blank", 
"email": "cannot be blank"} 

这工作得很好,如果我只是想在顶部显示错误消息。不过,我也想做一些类似于内置轨道的valdation,它包含了一个'fieldWithErrors'div的错误字段。 (其实我只是想追加类'fieldWithErrors'到错误输入)

我不确定在哪里找到适当的错误字段和添加错误div的轨道魔术,但我正在寻找该代码以便我可以返回一个包含错误消息的json对象,以及错误字段的实际ID,以便我可以用适当的类更新它。当然,我可以将对象名称(本例中为用户)预先添加到json对象中返回的'field'(即'first_name'),但是我希望这是一个通用函数,适用于任何形式的i有。

任何人都可以指向生成错误字段实际ID的位置。我很想做一些类似于@ object.errors [:first_name] .field_id的东西,这样我就可以返回一个与上面类似的json对象,除了我的键'first_name'实际上是'user_first_name',这个ID错误字段。

回答

1

看在ActionPack的/ lib目录/ ACTION_VIEW /助理/ form_helper.rb看到Rails的是怎么做的

以下是form_helper.rb方法决定的标签ID指着我

def tag_id 
     "#{sanitized_object_name}_#{sanitized_method_name}" 
    end 

    def sanitized_object_name 
     @sanitized_object_name ||= @object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_").sub(/_$/, "") 
    end 

    def sanitized_method_name 
     @sanitized_method_name ||= @method_name.sub(/\?$/,"") 
    end 
+0

谢谢在正确的方向。你熟悉form_helper文件吗?我可以看到哪里有tag_id方法,但是这是在InstanceTag类中。我无法弄清楚如何将我的@user对象属性变成tag_id的 – brad 2009-05-04 16:46:50