2012-08-01 28 views
0

我有以下所需的HTML(超薄模板):Rails的field_error_proc - 更改默認的錯誤目標

li 
    label 
     span 
      | Password 
      small.error ERROR MESSAGE 
     br 
     = f.password_field :password 

我想把錯誤(small.error)上面的 「跨度」 內。

我的解決方案(到目前爲止)是:

ActionView::Base.field_error_proc = Proc.new do |html_tag, instance| 
    if instance.error_message.kind_of?(Array) 
     %(#{html_tag}<small class="error"> 
     #{instance.error_message.join(',')}</small>).html_safe 
    else 
     %(#{html_tag}<small class="error"> 
     #{instance.error_message}</small>).html_safe 
    end 
end 

但這種方式的小標籤已經正確輸入的標籤之下。

我可以更改目標位置嗎?

+0

與回答類似的問題: http://stackoverflow.com/questions/7341545/rails-actionviewbase-field-error-proc-moving-up-在-DOM樹/ – maiconsanson 2012-08-02 20:58:20

回答

0

問題解決的javascript:

$("small.error").each(function(){ 
    $(this).appendTo($(this).parent("label").find("span")); 
});