Rails POST,PUT,GET
在生成一个脚手架后,Rails使我能够POST到items.xml
,这将创build一个新的item
。 一个GET的items.xml
将简单列出所有。 Rails根据我正在执行的操作的types来指定控制器中的哪个方法(分别为create
或index
)将被调用?
更具体地说,POST调用methodA,但获取到相同的URL调用methodB。 这在哪里指定? Rails在哪里决定调用控制器的index
方法?
我相信这是由REST指定的。 这是一个列表为雅:
GET /items #=> index GET /items/1 #=> show GET /items/new #=> new GET /items/1/edit #=> edit PUT /items/1 #=> update POST /items #=> create DELETE /items/1 #=> destroy
编辑添加获取所有这些路线,在config / routes.rb,只需添加map.resources :items
按照惯例,Rails为RESTful资源定义了七种控制器方法。 他们是:
操作HTTP方法目的 -------------------------------------------------- ----------------------- 索引GET显示资源的集合 显示GET显示单个资源 new GET显示用于创build新资源的表单 创buildPOST创build一个新的资源(新提交到此) 编辑GET显示用于编辑现有资源的表单 更新PUT更新现有资源(编辑提交到此) 销毁DELETE销毁一个资源
请注意,由于Web浏览器通常只支持GET和POST,因此Rails使用隐藏字段将它们转换为PUT和DELETE请求。
指定map.resources :items
config/routes.rb
map.resources :items
可以免费获得这七种方法。 您可以随时通过在控制台中inputrake routes
列出应用程序中的所有rake routes
。
- 有关更多详细信息,请参阅从外部input的Rails路由 。
了解这个最好的地方是路由指南 。
你想知道如何使用POST? 这样做,例如:
resources :items, :only => [:create]
..等等。 这是针对Rails 3的,并且会生成一个POST创build的资源。 或者,如果您只需要REST集合的一个非常小的子集,只需:
match 'items/:id' => "items#create', :via => :post
等等
像Don Werve说的那样,看看你的routes.rb文件。 在那里你可能有这样的事情:
map.resources :items
这是rails将POST和GET请求链接到某些操作的地方。 看看这个工作是如何看待其他答案的链接。 该文件帮助一吨。
对于所有路由以及它们链接到的操作,当您位于rails目录的根目录时,可以将rake routes
键入到命令提示符中。 这将显示一个脚手架给你的一切(就路由而言)。
这将有很大的帮助,但这不是对你的问题的直接回答。 以下命令将列出您的应用程序使用的映射,因此您不必记住所有的细节或猜测。
$ rake routes
为了更直接地回答,这是铁轨使用的惯例。 当你在你的routes.rb中join如下内容时,你可以设置这个映射
map.resources :items
map.resources是一个自动为您提供REST路由和path助手的方法。 如果您已经了解并理解了rails的安静路由是如何工作的,那么这是一个很好的特性,但是对于学习rails来说也是一个障碍,因为隐藏太多了。
Railsguides有一个很好的路线指南 。
说实话,你不能在Rails网站上的路由文档出错。 这有助于采取下一步措施,超越资源的舒适(对于大多数应用程序来说都是好的),并且确实可以确定可用的可靠路由function。