Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 栏杆柱,栏杆柱,栏杆柱,栏杆柱_Ruby On Rails_Ruby_Web Services_Http - Fatal编程技术网

Ruby on rails 栏杆柱,栏杆柱,栏杆柱,栏杆柱

Ruby on rails 栏杆柱,栏杆柱,栏杆柱,栏杆柱,ruby-on-rails,ruby,web-services,http,Ruby On Rails,Ruby,Web Services,Http,生成脚手架后,Rails使我能够发布到items.xml,这将创建一个新的item。进入items.xml将简单地列出它们。Rails在何处根据我正在执行的操作类型指定将调用控制器中的哪个方法(create或index) 更具体地说,POST调用methodA,但获取相同的URL调用methodB。这是在哪里指定的?Rails在哪里决定调用控制器的index方法?我相信它是由指定的。下面是给你的清单: GET /items #=> index GET /items

生成脚手架后,Rails使我能够发布到
items.xml
,这将创建一个新的
item
。进入
items.xml
将简单地列出它们。Rails在何处根据我正在执行的操作类型指定将调用控制器中的哪个方法(
create
index


更具体地说,POST调用methodA,但获取相同的URL调用methodB。这是在哪里指定的?Rails在哪里决定调用控制器的
index
方法?

我相信它是由指定的。下面是给你的清单:

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

了解这一点的最佳位置是。

如Don Werve所说,查看一下您的routes.rb文件。在那里,你可能有这样的东西:

map.resources :items
这就是rails将POST和GET请求链接到特定操作的地方。要了解其工作原理,请查看其他答案中的链接。医生帮了大忙


对于所有路由以及它们链接到的操作,当您位于rails目录的根目录中时,可以在命令提示符中键入
rake routes
。这将向您展示脚手架提供给您的一切(在路线方面)

这会有很大帮助,但它并不能直接回答你的问题。下面的命令将列出应用程序使用的映射,这样您就不必记住所有细节或猜测

$ rake routes
更直接地说,这是rails使用的约定。当您在routes.rb中放置类似于以下内容的内容时,可以设置此映射

map.resources :items

Rails按照约定为RESTful资源定义了七种控制器方法。它们是:

Action HTTP Method Purpose ------------------------------------------------------------------------- index GET Displays a collection of resources show GET Displays a single resource new GET Displays a form for creating a new resource create POST Creates a new resource (new submits to this) edit GET Displays a form for editing an existing resource update PUT Updates an existing resource (edit submits to this) destroy DELETE Destroys a single resource 操作HTTP方法用途 ------------------------------------------------------------------------- 索引GET显示资源的集合 show GET显示单个资源 new GET显示用于创建新资源的表单 create POST创建新资源(new提交到此资源) edit GET显示用于编辑现有资源的表单 更新放置更新现有资源(编辑提交到此资源) 销毁删除销毁单个资源 请注意,由于web浏览器通常只支持GET和POST,Rails使用一个隐藏字段将其转换为适当的PUT和DELETE请求

config/routes.rb
中指定
map.resources:items
可以“免费”获得这七种方法。通过在控制台中输入
rake routes
,您可以随时列出应用程序中的所有路由

  • 有关更多详细信息,请参阅

map.resources是一种自动为您提供REST路由和路径帮助的方法。如果您已经知道并理解了rails的restful路由是如何工作的,那么这是一个很好的特性,但它也有点妨碍您学习rails,因为隐藏的内容太多了


有一个很好的方法。

你想知道如何只使用POST吗?这样做,例如:

resources :items, :only => [:create]
……等等。顺便说一下,这是针对Rails3的,它将生成一个用于后期创建的资源。或者,如果您只需要REST集合的一小部分,只需:

match 'items/:id' => "items#create', :via => :post

等等。

老实说,Rails网站上的路由文档不会出错。这有助于采取下一步行动,超越资源的舒适性(对于大多数应用程序来说,这很好),真正确定可用的可靠路由功能


只需键入“rake routes”即可查看情况。是否有方法明确指定我只想使用ASP.NET MVC中的POST([HttPost]属性)?如果执行GET to/items,则将转到索引操作。如果您发布到/items,您将转到创建。@Alex:您可以通过将:via=>:POST添加到路由的末尾来指定仅使用POST。同样地,如果您只需要POST和GET(而不是PUT、DELETE等),您可以使用:via=>[:POST,:GET]它不是“由REST指定的”,它只是Rails中的一种约定。REST规范与框架应该如何处理请求无关,包括调用哪个方法。我尽了最大努力替换断开的链接。请检查并确保我链接到了正确的页面。谢谢。你也可以在actionpack/lib/action\u dispatch/routing/mapper.rb上查看源代码来“复制”这些行为