我有一个Rails控制器动作,其功能如下所示:
def rand
if !params.has_key?(:name)
rand_mymodel = Mymodel.offset(rand(Mymodel.count)).first
redirect_to "/crawl/" + rand_mymodel.name
end
@model = Mymodel.where("name = ?", params[:name])[0]
end
路线:
get "crawl/:name" => "mymodel#rand"
get "crawl/" => "mymodel#rand"
如何允许.
显示在:name
属性中,但在路由/网址中将其替换为%2E
(类似于用{{1}替换空格的方式})
我希望允许%20
出现在.
答案 0 :(得分:1)
您是否检查了相应的Guide?
默认情况下,:id参数不接受点 - 这是因为 dot用作格式化路由的分隔符。如果你需要使用 dot中的一个点:id添加一个覆盖它的约束 - 例如 :id => / [^ /] + /允许除斜杠之外的任何东西。
您的name
:
get "crawl/:name" => "mymodel#rand", name: /[^\/]+/