2009-10-07 52 views
1

我正在使用Lightbox Gone Wild來顯示內部表單的模態對話框。我正在使用香草新視圖。這就像一個冠軍直到用戶不輸入有效的表單數據。無效的數據會導致控制器將用戶直接指向新視圖並顯示錯誤消息。顯然,我寧願將錯誤返回給模式,但我明白用戶被定向到錯誤的常規新視圖的原因。Rails Modal表單驗證

一個明顯但不切實際的選擇是編寫自定義客戶端驗證。另一種方法是根據模型驗證生成客戶端驗證邏輯。爲此,我發現了兩個利用validation_reflection的嬰兒插件。雖然validatious-on-rails幾乎是周老client_side_validation似乎被放棄。最後,使用form_remote_tag也看起來很有前景,因爲它執行AJAX回發,並且似乎不會執行錯誤刷新。

總之,我正在尋找最常用的方式來驗證用戶輸入到在模式對話框中呈現給用戶的表單,並在錯誤時將它們返回到具有錯誤的對話框。

代碼來打開模態

<% link_to 'New Project...', new_project_path, :class => 'lbOn' %> 

新視角

<% form_for(@project) do |f| %> 
    <%= f.error_messages %> 

    <p> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </p> 
    <p> 
    <%= f.label :description %><br /> 
    <%= f.text_field :description %> 
    </p> 
    <p> 
    <%= f.submit 'Create' %><br /> 
    <a href="#" class="lbAction" rel="deactivate">Cancel</a> 
    </p> 
<% end %> 

回答

2

我在想你可能會返回一個RJS模板,它會更新你的Modal中的預設div以用於錯誤(而不是重定向到新的)。

3

我是背後的人validatious-on-rails。我的觀點是你在很多情況下需要客戶端和AJAX。以前嘗試以DRY的方式解決客戶端驗證,那裏有很多Rails驗證選項丟失了,但我試圖通過客戶端驗證來儘可能地解決Rails選項 - 僅限於遇到了一些問題:如果/除非另有一些其他原因很明顯,否則在大多數IRL案例中都是不可能的。對於這些情況以及你必須查詢數據庫的情況(比如檢查用戶標識的唯一性),你需要AJAX。在你的情況下,你只需要用你想要驗證的輸入做一個AJAX請求,然後返回一個RJS/JS模板(將作爲JSON體返回),用於定期更新表單內容/消息/等等。