這裏是如何,我認爲這7個REST風格Controller行動。以個人資源爲例。相應的PeopleController將包含以下操作:
索引:列出一組人(可能有一些可選條件)。
顯示:加載一個以前創建的人員,目的是查看。相應的視圖通常是「只讀」的。
新:設置或建立的人的新實例。它尚未保存,只是設置。相應的視圖通常是用戶可以輸入這個新人的屬性值的某種形式。當這個表單被提交時,Rails將它發送給「創建」操作。
創建:保存使用「新」操作設置的人員。
編輯:檢索以前創建的人,目的是更改其屬性。這些更改尚未完成或尚未提交。相應的View通常是Rails將提交給「更新」操作的表單。
更新:保存編輯先前建立的人的時候所做的更改。
destroy:好的,正如你猜測的那樣,銷燬或刪除一個以前創建的Person。
當然有一些爭論這些行動7是否足以爲所有控制器,但以我的經驗,他們往往有少數例外來完成這項工作。添加其他操作通常表示需要額外的資源類型。
例如,假設您的人力資源應用程序充滿了您剛要僱用的人員資源。爲了做到這一點,你可能會試圖創建一個「僱用」行爲(即/ people/456/hire)。但是,更多REST風格的方法會將此視爲就業資源的「創造」。類似以下內容:
class Person < ActiveRecord::Base
has_many :employments
has_many :employers, :class_name => 'Company', :through => :employments, :source => :company
end
class Employement < ActiveRecord::Base
belongs_to :person
belongs_to :company
end
class Company < ActiveRecord::Base
has_many :employments
has_many :employees, :class_name => 'Person', :through => :employments, :source => :person
end
然後將使用EmploymentsController的create動作。
好的,這是越來越長。不要害怕設置許多不同的資源(並且你可能不會使用所有這7個控制器動作)。它從長遠來看付出了代價,並幫助您堅持這7個基本的RESTful行動。