2

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

在某些时候,我添加了一个名为“位置”的新方法,用于存储用户配置文件位置。此方法仅响应 JSON 请求。

添加此方法后,在更新配置文件操作之后,重定向的行为与以前不同。它应该重定向到编辑操作,但我得到的是:

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

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

4

1 回答 1

2

location是一种ActionController::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
于 2012-12-07T12:02:41.110 回答