Ruby on rails 如何打推杆路线
在我的一个restfull控制器中,我有一个额外的方法叫做“importdata”。当我实际更改数据(在数据库中导入csv)时,我理解它应该是一个put路由,而不是get路由 起初我有Ruby on rails 如何打推杆路线,ruby-on-rails,routes,Ruby On Rails,Routes,在我的一个restfull控制器中,我有一个额外的方法叫做“importdata”。当我实际更改数据(在数据库中导入csv)时,我理解它应该是一个put路由,而不是get路由 起初我有 resource data_set do put 'importdata', on: :method end 我也尝试过的是: put 'data_sets/:id/importdata', "data_sets#importdata' rake routes在这两种情况下都显示了我想要的路线 当我在控制
resource data_set do
put 'importdata', on: :method
end
我也尝试过的是:
put 'data_sets/:id/importdata', "data_sets#importdata'
rake routes在这两种情况下都显示了我想要的路线
当我在控制器中的(第一个示例)路由上使用该方法时,我所做的是
redirect_to import_data_sets_path id: dataset.id
第二个例子是:
redirect_to controller: "data_sets", action: "importdata", id: dataset.id
在这两种情况下,我得到的信息是:
No route matches [GET] "/data_sets/28/importdata"
这是正确的,因为这是一条put路线。我让它工作的唯一方法是将put更改为get:
get 'data_sets/:id/importdata', "data_sets#importdata'
我怎样才能让它在put路线上工作?首先应该是一条put路线吗
谢谢您的时间。简单地说,您无法“升级”用户发出的HTTP请求。重定向仅用于“工作覆盖”获取。如果用户正在更改某些内容,请通过表单进行更改,并确保在修改现有资源时该请求是PUT请求 如果PUT是有条件的,那么有几个选项,要么在UI中找出解决方法,使用HTTP客户端发出PUT(这对本地调用没有意义),要么在其他类型的类中提取资源的编辑并在控制器中使用它 然而,即使编辑是可选的,让用户首先触发PUT也是更有意义的
希望这能有所帮助。重新定向到看跌期权不会让唤醒者想到同样的事情。你想通过重定向实现什么?你能告诉我为什么不吗?重定向是在csv字段和内部模型字段之间设置映射后发生的。我只能在具有该映射时导入数据。我很高兴重定向到get路由,我只是想了解为什么重定向到put是错误的,因为我知道当您更改任何内容时,您永远不应该使用get。
put
方法是从用户接收数据,然后触发任何更改数据的调用的方法。重定向是要求用户的浏览器转到其他URL。与刚刚接受CSV数据的URL不同,用户应该在这个新URL上做什么?