Rails 4.1 route path helper 在路径生成中使用不正确的 id
Rails 4.1 route path helper using incorrect id in path generation
我正在从 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??
现在生成的路径中的设施 ID 不同。应该是 2035637533
,就像在最后一个请求之前的 _path
请求中一样。
谁能帮助我理解 _path
帮助程序因第三个参数而产生的行为差异?
在 Rails 4.0 中,我没有注意到这种行为。路径按预期生成,路径中的设施 ID 设置为 2035637533
.
我的猜测是您正在合并参数,即合并 id 密钥并将 id 设置为帐户 id。尝试:
account_facility_report_path( @account, @facility, format: :pdf )
我正在从 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??
现在生成的路径中的设施 ID 不同。应该是 2035637533
,就像在最后一个请求之前的 _path
请求中一样。
谁能帮助我理解 _path
帮助程序因第三个参数而产生的行为差异?
在 Rails 4.0 中,我没有注意到这种行为。路径按预期生成,路径中的设施 ID 设置为 2035637533
.
我的猜测是您正在合并参数,即合并 id 密钥并将 id 设置为帐户 id。尝试:
account_facility_report_path( @account, @facility, format: :pdf )