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
我有这个嵌套资源:
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