2012-07-16 44 views
0

有一點撕心裂肺軌誤差的問題。主要問題是在視圖中錯誤顯示數組輸出並且不能連接在一起(用戶友好)。我可以在視圖中添加「連接」方法,並且可以很好地處理具有多個錯誤的屬性。雖然自然如果屬性只包含1個錯誤,這將會中斷。渲染加入陣列顯示Rails的錯誤

所以我目前正在試圖爲具有誤差加入控制器,這樣,如果上一個屬性出現多錯誤,它看起來很漂亮。嘗試在視圖中添加.join方法不起作用,因爲在出​​現1錯誤的實例中它將會中斷(因爲您無法在字符串上調用連接方法)

任何幫助如何使此工作在控制器將是偉大的。有關處理此問題的其他方式的任何建議也很棒。 (從我的努力prettyify /像這樣的控制器加入陣列錯誤邏輯)

控制器:

if @person.errors.blank? && @person.save 
    flash[:info] = "Your profile has been successfully updated." 
    redirect_to profile_url(@person) and return 
else 
    if @person.errors.on(:first_name).is_a?(Array) 
    @person.errors.on(:first_name).join 
    end 
    flash[:warning] = "Sorry, there was a problem saving your profile. Please try again." 
    render :edit 
end 

查看:

%li 
     = label(:person, :first_name, "First Name") 
     = f.text_field :first_name 
     - if @person.errors[:first_name].present? 
      %span{:style => "color: red; margin-left: 180px;"}= @person.errors[:first_name] 

回答

1

你可以簡單的使用方法to_a。它在數組中轉換字符串,並且它對數組不做任何處理。

您應該創建一個自定義的驗證喜歡這裏:http://guides.rubyonrails.org/active_record_validations_callbacks.html#performing-custom-validations

之後,你可以重構你的代碼是這樣

if @person.save 
    flash[:info] = "Your profile has been successfully updated." 
    redirect_to profile_url(@person) 
else 
    @person.errors[:first_name] = @person.errors.on(:first_name).to_a.join 
    flash[:warning] = "Sorry, there was a problem saving your profile. Please try again." 
    render :edit 
end 
+0

感謝您的幫助球員。我最終不得不在視圖中進行調整,因爲顯然試圖在控制器中傳遞這些條件是Rail不喜歡的。不確定它是否與Rails 2.3有關。 – mcc 2012-07-19 17:45:40