На странице "Моя учетная запись" перечислены все учетные записи, и для каждой учетной записи есть ссылка на "+ Сервис"; это должно направлять пользователя на страницу /my _services/new и предварительно заполнить поле account_id соответствующим идентификатором, в зависимости от того, какая ссылка была нажата на странице индекса Учетные записи.
У меня есть debug (params) внизу каждой страницы, и с тем, что я пытаюсь, я не получаю ничего, кроме: controller и: действие, отображающееся в моих параметрах для /my _services/new page.
Ссылка, которую я пытаюсь, такова:
link_to "+ Service", "my_services/new", :account_id => acct.id
Затем у меня также есть логика в контроллере служб:
def new
@my_service = MyService.new
if params[:account_id]
@my_service.account_id = params[:account_id]
end
end
Может кто-нибудь помочь с правильным способом сделать это? Я еще не смог добиться этого с помощью нескольких неприятных маленьких взломанных вещей, которые я пробовал.
ИЗМЕНИТЬ
Оказывается, если кто-то смотрит на этот ответ в будущем, вложенные ресурсы (возможно, с опцией shallow: true
в routes.rb) кажутся способностью. Мои route.rb для этой части теперь выглядят так:
resources :accounts, shallow: true do
resources :services
end
Теперь мои ссылки выглядят следующим образом:
<%= link_to "+ Service", new_service_path(:service => { :account_id => @account.id } ) %>