这是rails中的错误吗? 我有以下路由:
namespace :admin do
resources :products do
resources :images
end
end
创建以下路径
admin_product_image GET /admin/products/:product_id/images/:id(.:format) admin/images#show
然而,当我尝试通过
返回路径时polymorphic_path( [ @imageable, @image ] )
它返回一个错误:#<#:0x007ff8963f0f98>
的未定义方法`admin_product_admin_image_path'似乎在寻找`admin_product_admin_image_path'而不是'admin_product_image_path'
如果我调试“polymorphic_routes.rb”并修改它:
(proxy || self).send(named_route, *args)
发送“admin_product_admin_image_path”并生成错误,而不是发送:
(proxy || self).send("admin_product_image_path", *args)
没有出现错误。 polymorphic_path不能用于命名空间吗?
修改 现在可以确认polymorphic_url函数不适用于名称空间!
修改 通过编辑糟糕的主意 polymorphic_routes.rb,我设法硬编码修复糟糕的主意。
In def build_named_route_call(records, inflection, options = {}) ....
....
route << model_name_from_record_or_class(record).singular_route_key
.....
route << model_name_from_record_or_class(record).route_key
bad *
route << model_name_from_record_or_class(record).singular_route_key.gsub(/admin_/,'').to_s
和
route << model_name_from_record_or_class(record).route_key.gsub(/admin_/,'').to_s
答案 0 :(得分:0)
这是rails中的一个错误。上面我的问题中的编辑是需要修复的地方......但是我的硬编码编辑会破坏rails中的其他内容 - 所以请避免使用它。
目前唯一的解决方案是不在rails中使用命名空间,嵌套资源和多态关联。