Rails 嵌套资源在控制器中不工作

Rails nested Resources not working in controller

我有这个嵌套资源:

resources :services do
  resources :users  do
    put "assign" => "services#users#assign", as: :assign
  end 
end

我的表格包含这个:

<%= button_to 'submit', service_user_assign_url(service.id, abstractor.id), method: :put %>

这会生成以下 url,对我来说看起来不错:

http://localhost:3000/services/1/users/2/assign

下面是我的服务控制器:

def assign
  @service = Service.find(params[:service_id])
  @service.users << User.find(params[:user_id])
  redirect_to dashboards_path
end

但是我得到这个错误:

 The action 'users' could not be found for ServicesController

我不确定这意味着什么 - 我在用户和服务之间拥有并属于许多关系,我正在尝试将现有用户与服务相关联

你需要告诉rails这个动作是成员动作还是collection动作,从你提到的url你想使用,它是一个成员动作:

resources :services do
  resources :users  do
    member do
      put :assign
    end
  end 
end