有人可以解释为什么名为 'location' 的控制器方法在 Rails 3.2 中有一些意外的行为吗?



我正在使用Rails 3.2开发一个项目。在这个项目中,我有一个控制器,它用基本的CRUD方法管理用户配置文件

在某个时刻,我添加了一个名为"location"的新方法,用于存储用户配置文件的位置。此方法只响应JSON请求。

在我添加了这个方法之后,在更新概要文件操作之后,重定向的行为与以前不同。它应该重定向到编辑操作,但我得到了这样的东西:

Redirected to http://localhost:3000/profiles/1/edit
Completed 406 Not Acceptable in 367ms (ActiveRecord: 23.1ms)

编辑配置文件操作路线没有改变,如果我重命名"位置"操作,一切都很好,所以我使用方法名称导致了这种情况,但我不知道为什么。你能帮我吗?

locationActionController::Metal的一种方法,可用于控制器,您可以通过这种方式覆盖它。

您可以保留路由/users/:id/location,而无需将方法命名为location。例如,在您的routes.rb:中

resources :users do
member do
put :location, to: 'users#update_location' # Use the verb and the action name you see fit
end
end

以及在您的UsersController:中

class UsersController < ApplicationController
def update_location
# Do your magic
end
end

最新更新