ruby-on-rails - 为 HTTP Verb PATCH 生成的实际 URL Rails 是什么?
问题描述
新手请多包涵。我了解 Rails 如何为简单的 URL 链接(如localhost:3000/rooms/11/listing
. 格式很简单,如 Routes 表中所述。但是,当涉及到 PATCH、PUT、DELETE 和 CREATE 时,我感到很困惑。例如,当我单击“保存”按钮时,下面的输出带有参数。我的问题是,当我单击 SAVE 按钮时,Rails 生成的实际 URL 是什么?
Started PATCH "/rooms/11" for 127.0.0.1 at 2019-08-20 05:25:32 +0800
(0.8ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
↳ /usr/local/rvm/gems/ruby-2.6.0/gems/activerecord-5.2.2/lib/active_record/log_subscriber.rb:98
Processing by RoomsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"JHiCJ6HoTsgd8SGgLTFiZ9+J9hS9U8hHGvjKf4Lz3uieQ8OO2eFqFEM/D5xocHp/Nd3eA0az9k+okrmNe65BYg==", "room"=>{"home_type"=>"Apartment", "room_type"=>"Private", "accommodate"=>"3", "bed_room"=>"4", "bath_room"=>"3"}, "commit"=>"Save", "id"=>"11"}
我从控制台知道
app.room_path(11)
=> "/rooms/11"
这是 Rails 生成的 URLlocalhost:3000/rooms/11{"utf8"=>"✓", "authenticity_token"=>"JHiCJ6HoTsgd8SGgLTFiZ9+J9hS9U8hHGvjKf4Lz3uieQ8OO2eFqFEM/D5xocHp/Nd3eA0az9k+okrmNe65BYg==", "room"=>{"home_type"=>"Apartment", "room_type"=>"Private", "accommodate"=>"3", "bed_room"=>"4", "bath_room"=>"3"}, "commit"=>"Save", "id"=>"11"}
吗?
解决方案
不,生成的 URLapp.room_path(11)
是http://localhost:3000/rooms/11
.
PATCH、PUT、DELETE 和 POST 称为 HTTP 动词。CREATE 不是 HTTP 动词。
这些动词之一伴随您的请求,Rails Router 使用它将请求路由到正确的控制器和操作。
请求可以有参数,就像你在这里展示的那样:
{"utf8"=>"✓", "authenticity_token"=>"JHiCJ6HoTsgd8SGgLTFiZ9+J9hS9U8hHGvjKf4Lz3uieQ8OO2eFqFEM/D5xocHp/Nd3eA0az9k+okrmNe65BYg==", "room"=>{"home_type"=>"Apartment", "room_type"=>"Private", "accommodate"=>"3", "bed_room"=>"4", "bath_room"=>"3"}, "commit"=>"Save", "id"=>"11"}
当您单击“保存”按钮时,您的浏览器http://localhost:3000/rooms/11
使用 HTTP 动词 POST 请求。参数被编码在请求的正文中。
了解更多信息的好地方是Rails 路由指南。
推荐阅读
- c# - 具有自定义数据类型的 JSON.NET 转换类
- node.js - 聊天机器人消息未显示在 Facebook Messenger 聊天头中
- python - Python - 如何绑定自定义端点 Flask-Restful
- c# - 使用静默模式安装 MSI 的 WPF 应用程序然后获取进度和状态消息
- reactjs - 表单:我应该在表单的每一页上做一个 POST,还是在表单流程结束时做一个 POST?
- ruby-on-rails - 无法安装旧的 mysql2 gem
- javascript - 在 JS 中创建动态变量名
- html - 制作类似于 Windows 资源管理器的下拉树形菜单
- kubernetes - 在 istio 中推送目标规则时会发生什么
- testing - Capybara::ElementNotFound 当元素清楚地在页面上时