Ram*_*amy 0 action routes ruby-on-rails ruby-on-rails-3
我对网络开发非常陌生(我觉得我最近的所有帖子都是以这种方式开始的)并且随着时间的推移变得不那么新了.我正处于可以完成相当多工作所需的事情的地步,但是我遇到了一个棘手的问题:
如何确定我应该对给定任务使用哪种操作?index,show,new,edit,create,update或destroy?
destroy是非常明显的,我可以将其余部分松散地分成两个桶,其中index/show在一个中,new/edit/create在另一个中.但是我如何决定使用哪一个或者我应该自己构建一个呢?
一些通用指南或进一步阅读的链接对我来说非常有益.
以下是我对这7个RESTful Controller操作的看法.以人员资源为例.相应的PeopleController将包含以下操作:
index:列出一组人(可能有一些可选条件).
show:加载一个先前创建的Person ,以便查看.相应的视图通常是"只读".
new:设置或构建Person的新实例.它还没有保存,只是设置.相应的View通常是某种类型的表单,用户可以在其中输入此新Person的属性值.提交此表单后,Rails会将其发送到"创建"操作.
创建:保存使用"新"操作设置的人员.
编辑:检索以前创建的人员,目的是更改其属性.尚未进行或提交更改.相应的View通常是Rails将提交给"更新"操作的表单.
更新:保存编辑先前创建的人员时所做的更改.
destroy:嗯,正如你猜测的那样,销毁或删除以前创建的Person.
当然,对于这7个动作是否足以适用于所有控制器存在一些争论,但根据我的经验,他们倾向于完成这项工作,几乎没有例外.添加其他操作通常是需要其他类型资源的标志.
例如,假设您有一个人力资源应用程序,其中包含您刚要雇用的人力资源.为了实现这一目标,您可能会想要创建一个"雇佣"行动(即/ people/456/hire).但是,更加RESTful的方法会将此视为就业资源的"创造".类似于以下内容:
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
Run Code Online (Sandbox Code Playgroud)
然后将使用EmploymentsController的创建操作.
好的,这已经很久了.不要害怕设置许多不同的资源(并且您可能不会对每个资源使用所有7个Controller操作).从长远来看,它可以带来回报,并帮助您坚持这7个基本的RESTful动作.
| 归档时间: |
|
| 查看次数: |
833 次 |
| 最近记录: |