2015-03-01 5 views
0

У меня есть этот вложенный ресурс:Rails вложенные ресурсы не работают в контроллере

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 

я не уверен, что это значит - у меня есть и принадлежат ко многим отношений между пользователями и услугами, и я пытаюсь связать существующий пользователь к службе

+0

Возможно, это связано с «сервисом # users # assign». Я этого никогда не видел. Возможно, вы имели в виду "services # assign"? – Swards

ответ

2

вы должны сказать, рельсы, если это действие является действием членом или действие коллекции, из URL вы упомянули, что вы хотите использовать, это действие члена:

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

В принципе правильный кроме члена, а не членов – tbrooke

+0

извините, это была опечатка, исправит его –