Rails: динамически генерируемый путь добавляет точку и идентификатор в конце

#ruby-on-rails #url #resources

#ruby-on-rails #url #Ресурсы

Вопрос:

У меня есть следующее:

 # /config/routes.rb
resources :employees, :as => :firm_employments, :controller => :firm_employments do
  resource :user_account
end
  

Однако я получаю следующее:

 @firm_employment = FirmEmployment.find(1)
@user_account = @firm_employment.employee.user_account
firm_employment_user_account_path(@firm_employment, @user_account) # => '/employees/1/user_account.3'
  

Почему точка и идентификатор @user_account добавляются к этому пути? Я пытаюсь заставить его возвращать просто: «/employees/1/user_account»

Заранее спасибо.

Ответ №1:

Если есть только один из определенного ресурса, то вы не передаете идентификатор, поскольку он неявный:

 firm_employment_user_account_path(@firm_employment)
  

То, что вы делаете, это указываете @user_account в качестве :format опции, поэтому, конечно, он идет в конце после точки.

Если у вас их несколько, вам нужно определить маршрут по-другому:

 resources :user_accounts
  

Комментарии:

1. Только что понял это, но ты меня опередил! Спасибо за ответ.