2014-03-05 28 views
1

第一個問題:如何驗證模型關係並在驗證失敗時將其標記在表單中。Rails 4:如何顯示紅色錯誤的字段?

我有對象模型:

class Subject < ActiveRecord::Base  
    belongs_to :semester 
    validates_presence_of :semester 
end 

在我看來(表格):

<%= select_tag :semester, options_from_collection_for_select(@semesters,"id","name") %> 

validates_presence_of工作正常。但是當驗證失敗時(用戶忘記進入學期)。學期輸入未標記爲紅色。

第二個問題:如何驗證輸入字段。

在我看來,我也有一個大學的投入領域,但是模型學科與大學沒有關係,沒有大學科目表。那麼如何驗證它並將其標記爲紅色。

在此先感謝。

回答

1
# app/models/subject.rb 
class Subject < ActiveRecord::Base  
    belongs_to :semester 
    validates :semester, :university, presence: true # new syntax http://api.rubyonrails.org/classes/ActiveModel/Validations/ClassMethods.html#method-i-validates 
end 

# app/views/subjects/_form.html.erb 
<%= form_for @subject do |f| %> 
    Semestr: <%= f.collection_select :semester_id, Semestr.all, :id, :name, prompt: true %> 
    University: <%= f.text_field :univercity %> 
<% end %> 

有關在軌建設表單的詳細信息(與驗證),因此您會發現有http://api.rubyonrails.org/classes/ActionView/Helpers/FormBuilder.html

+0

這回答了我的第一個問題。謝謝。 但我得到這個錯誤:未定義的方法'大學'的#<主題:0x007fb09d8d9f00> – dkonayuki

+0

什麼關係是「大學」與主題? – itsnikolay

+0

與主題無關。但大學與學期有關係。所以我需要用戶先選擇大學,然後選擇學期。 – dkonayuki

0

你希望的那些「紅色錯誤」可能來自於像formtastic這樣的幫手寶石,隨時檢查一下。

我幾乎不知道你的第二個問題在問什麼,但是如果你正在尋找一個自定義驗證。看看他們的rails docs尋求幫助。

如果您想了解更多的幫助,(請)如果你想以紅色顯示的「開箱即用」錯誤的字段編輯你的問題更清晰(感謝)

+0

我試圖驗證與主題無關的大學輸入字段。當我在模型中「驗證:大學,在場:真實」。我得到這個錯誤:'未定義的方法大學'爲#<主題:0x007fb09d8d9f00>',因爲主題中沒有大學領域。 – dkonayuki

1

,你必須使用form builder。該代碼看起來像f.select ...而不是使用select_tag

使用表單生成器,帶有錯誤的字段在<div class="field_with_errors">...</div>內部創建。由腳手架生成的css文件以紅色顯示這些字段;如果你不使用它,你必須添加CSS規則到你的CSS。

相關問題