如何在自定义' get '路由中使用路径帮助器



我的路由中有以下一行。(Rails 6.0.3.7)

namespace :api do
namespace :xml do
get ":resource_type/:id",
resource_type: /[^.]+/,
id: /[h-]+/,
controller: "generic_resources",
action: "show"
end
end

我期望类似api_xml_path 1, action: "show", resource_type: "as/df"的东西返回类似/api/xml/as/df/1的东西。但我得到的却是"/api/xml/as%2Fdf.1"

是否有不同的方式,我应该调用我的_path助手在这里?

Rails将每个路径参数的值(例如,:resource_type)视为URI语法中的单个'路径段'。根据URI语法规范,任何保留字符(包括分隔符'/','?', '#'等)必须是百分比编码的,这是Rails自动完成的。

更简单地说,Rails不知道你试图使用'as/df'中的'/'作为路径分隔符,它只看到一个需要编码的字符串。

如果你有像这样的通用嵌套资源,你最好把路径规范本身分开,这样它就有多个参数:

namespace :api do
namespace :xml do
get ":resource_type/:subtype/:id",
...
end
end

然后:

api_xml_path 1, action: "show", resource_type: "as", subtype: 'df'

相关内容

  • 没有找到相关文章

最新更新