2013-08-20 34 views
0

我有一個Rails應用程序,其中包括一個用戶模型。 用戶可以編輯屬性(地址,名稱,密碼,區域設置)。Rails一個模型多個形式一頁

要平安,我創建了一個資源用戶模式

#routes.rb 
resources :users, only: [:edit, :update] 

,用戶可以更新他的屬性頁面(/用戶/:ID /編輯)包含多種形式(一個用於一般信息如地址,一個用於區域設置,另一個用於更改密碼)。

分別關於該三種形式看起來是這樣的:

= form_for(current_user, html: { class: 'fill-up' }) do |f| 
    .padded 
     = render 'shared/error_messages', object: current_user 
     = f.label :locale 
     .input 
     = f.select(:locale, [['Deutsch', 'de'], ['English, 'en']]) 
    .form-actions 
     = f.button 'Submit', class: 'button' 

問題是,如果我呈現編輯行動以顯示CURRENT_USER對象的錯誤信息,這些錯誤的消息將是以所有三種形式顯示。

什麼是Rails最佳實踐,以不同形式分割模型屬性,並僅將錯誤消息顯示在一個特定的表單上,而不是全部顯示。此

+1

所以你試圖在使用導致錯誤的屬性的窗體中顯示錯誤消息? – claptimes

+0

是的,到目前爲止,錯誤消息以每種形式顯示,因爲每個表單都獲取current_user對象。如果只能指定要在「共享/錯誤消息」中交接的對象的某些屬性,那將是非常好的 - 部分 – pmuens

回答

1

了一個解決方案,可以說你有2種形式 1)解決 2)密碼

在地址編輯表單只顯示地址屬性錯誤的CURRENT_USER像

然後,

current_user.errors[:address] if current_user.errors.has_key?(:address) 

而不是

current_user.errors 

類似的密碼形式,你只是顯示密碼錯誤

current_user.errors[:password] if current_user.errors.has_key?(:password) 

這樣你就可以避免所有形式的同樣的錯誤。

+0

太棒了!像魅力一樣工作!謝謝! – pmuens

相關問題