Ruby on rails 栏杆柱,栏杆柱,栏杆柱,栏杆柱
生成脚手架后,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
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
,您可以随时列出应用程序中的所有路由
- 有关更多详细信息,请参阅
有一个很好的方法。你想知道如何只使用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上查看源代码来“复制”这些行为