我SettingsController
允许我管理User
的设置。
class Api::V1::SettingsController < Api::V1::BaseController
def show
@user = User.find(params[:id])
end
def update
@user = User.find(params[:id])
@user.settings = JSON.parse(params[:settings])
authorize! :edit, @user
if @user.save
render status: :ok
else
render status: :bad_request
end
end
end
和那条路线
resources :settings, only: [:show, :update]
设置是一个文本字段:serialize :settings, HashWithIndifferentAccess
所以我向PUT
发送了http://mypage.com/api/vi/settings/:id.json
个请求,其中包含参数:"{\"settings\":{\"color\":\"red\"}}"
但我明白了:
uninitialized constant Setting
{"_json"=>"{\"settings\":{\"color\":\"red\"}}",
"id"=>"1",
"format"=>"json",
"setting"=>{"_json"=>"{\"settings\":{\"color\":\"red\"}}"}}
在这种情况下我该如何设置路线?
我的路线:
app(development)» rake routes |grep settings
api_v1_setting GET /api/v1/settings/:id(.:format) api/v1/settings#show
PATCH /api/v1/settings/:id(.:format) api/v1/settings#update PUT /api/v1/settings/:id(.:format) api/v1/settings#update
当我使用非资源路线时:
put 'settings/:id' => 'settings#update'
app(development)» rake routes |grep settings
api_v1 PUT /api/v1/settings/:id(.:format) api/v1/settings#update
我得到了同样的错误。
答案 0 :(得分:-2)
你可以运行佣金路线| grep设置检查您的路线。 也许使用应修改您的设置rotues与一些名称空间,如
scope :module => :api do
constraints :subdomain => /(api|testapi|devapi)/ do
namespace :v1 do
resources :setting, :only => [:show, :update]
end
end
end
答案 1 :(得分:-2)
在这种情况下,您不能使用资源丰富,因为您没有设置模型。您需要使用非资源路由。
http://guides.rubyonrails.org/routing.html#non-resourceful-routes