Rails 4.1 помощник пути маршрута, использующий неправильный идентификатор в генерации пути - PullRequest
0 голосов
/ 01 октября 2018

Я работаю над обновлением с Rails 4.0.13 до Rails 4.1.16 ... на пути к Rails 5.

@account и @facility - это экземпляры модели ActiveRecord, которые успешно получены вконтроллер FacilitiesController

@account = #<Account id: 1863133034>
@facility = #<Facility id: 2035637533>

routes.rb выглядит так:

resources :accounts do
  resources :facilities do
    get :report
  end
end

В консоли Rails 4.1.16 во время запроса:

> request.env["REQUEST_PATH"]
=> "/accounts/1863133034/facilities/2035637533"

> params
{"action"=>"show", "controller"=>"facilities", "account_id"=>"1863133034", "id"=>"2035637533"}

> account_facility_report_path( @account, @facility, {})
=> "/accounts/1863133034/facilities/2035637533/report"


> account_facility_report_path( @account, @facility, params.merge( format: :pdf ) )
=> "/accounts/1863133034/facilities/1863133034/report.pdf?id=2035637533"  # why different facility ID??

Идентификатор объекта теперь другой в сгенерированном пути.Должно быть 2035637533, как в запросе _path, предшествующем этому последнему.

Может ли кто-нибудь помочь мне понять разницу в поведении помощника _path из-за 3-го параметра?

В Rails 4.0 такого поведения не замечаю.Путь генерируется, как и ожидалось, с идентификатором объекта в пути, установленным на 2035637533.

1 Ответ

0 голосов
/ 01 октября 2018

Я предполагаю, что вы объединяете params, который объединяет ключ идентификатора и устанавливает идентификатор для идентификатора учетной записи.Попробуйте:

account_facility_report_path( @account, @facility, format: :pdf )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...