0

我有一个 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"

如何允许 a.出现在:name属性中,但%2E在路由/URL 中将其替换为(类似于如何将空格替换为%20

我想允许.出现在:name

4

1 回答 1

1

你检查过相应的指南吗?

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

你的也是如此name

get "crawl/:name" => "mymodel#rand", name: /[^\/]+/
于 2013-05-13T05:47:09.163 回答