Rails POST,PUT,GET

在生成一个脚手架后,Rails使我能够POST到items.xml ,这将创build一个新的item 。 一个GET的items.xml将简单列出所有。 Rails根据我正在执行的操作的types来指定控制器中的哪个方法(分别为createindex )将被调用?

更具体地说,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。

http://guides.rubyonrails.org/routing.html