嵌套的命名空间资源,多态关联和路径
这是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 ] )
它返回一个错误:对于#未定义的方法`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
坏*
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
这是rails中的一个错误。 上面我的问题中的编辑是修复需要去的地方……但是我的硬编码编辑会破坏rails中的其他内容 – 所以请避免使用它。
目前唯一的解决方案是不在rails中使用命名空间,嵌套资源和多态关联。