Ruby on rails Rails附加补丁路径
我已经有CRUD了,我想添加一个额外的补丁路径,如下所示:Ruby on rails Rails附加补丁路径,ruby-on-rails,Ruby On Rails,我已经有CRUD了,我想添加一个额外的补丁路径,如下所示: PATCH /searches/:id(.:format) searches#update PATCH /searches/sync(.:format) searches/sync#perform 然而,当我调用api时,它总是返回一个错误 ActiveRe
PATCH /searches/:id(.:format) searches#update
PATCH /searches/sync(.:format) searches/sync#perform
然而,当我调用api时,它总是返回一个错误
ActiveRecord::RecordNotFound无法找到“id”=同步的搜索
有什么想法吗
同步控制器
module Searches
class SyncController < ApplicationController
def perform
search_ids = params[:search_ids]&.keys&.map { |key| params[:search_ids][key] } || []
outcome = SearchSync.run(search_ids: search_ids, user: current_user)
if outcome.success?
render json: outcome.result
else
render json: outcome.errors.symbolic, status: 422
end
end
end
end
我认为您需要将名称空间从“searches”重命名为其他名称,因为它与以下资源冲突:searches。如果不想更改,则必须在资源:搜索上方声明名称空间
第二,,在这种情况下,我怀疑补丁是正确的方法,因为补丁应该在存在现有资源的地方使用,我们需要对其进行部分更新。我认为您有任何before\u过滤器来加载控制器中调用的@search object?您能添加控制器代码吗?嗯,但是SearchController和SyncController都没有before\u过滤器在Itan和我的应用程序\u控制器中,与搜索无关:/你能共享同步操作代码吗?谢谢你,顺便说一句,我正在更新搜索的用户\u id,但只会收到数据库中已经存在的id数组,你尝试过重命名名称空间“搜索”吗?还是将其位置替换为资源:搜索?
resources :searches, only: [:index, :update, :destroy]
namespace :searches do
patch '/sync', to: 'sync#perform'
end