2013-05-13 53 views
0

我有一个Rails控制器行动,显示功能:替换“。”用“%2E”在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属性,但在路由/ URL中替换为%2E(类似于空间替换为%20

我想允许. ar in :name

回答

1

您是否检查过各自的Guide

默认情况下:id参数不接受点 - 这是因为 点用作格式化路由的分隔符。如果您需要在:id中使用点号 ,请添加一个覆盖此点的约束条件 - 例如 :id =>/[^ /] + /允许除斜杠之外的任何内容。

同样是真实的你name

get "crawl/:name" => "mymodel#rand", name: /[^\/]+/