Rails 这种 URL 如何实现

hynmath · 2014年10月08日 · 最后由 hynmath 回复于 2014年10月08日 · 1280 次阅读

Project 模型有 namespace (所在空间), 以及 name (项目名称) 两个属性。定义 Project 的 to_param 方法如下

def to_param
  namespace.name + "/" + name
end

假设 @project 是一个 Project 对象,所在空间的名称为 ruby, 而 project 的名称为 rails. @project.to_param 确实能输出 ruby/rails; 但是在路由帮助方法中,比如 project_path(@project), 却变成了 ruby%2Frails.

这肯定是发生了转义,但我不要它转义,保留原来的样式,请问我该怎么做?

我已在网上搜索解决方法,但无果,请各位大侠帮帮忙^_^

PS: 本质就是想实现像 Github: https://github.com/rails/rails 这样子的 URL.

# config/routes.rb
get /projects/:namespace/:name

# views
project_path(@project.attributes.slice(:namespace, :name))

传统思路来一个

#1 楼 @zlx_star 这是一个想法,谢谢:)

问题解决了,退到 rails 4.1.1 就可以了。感谢 Andor Chen. 详细讨论参见 https://github.com/rails/rails/issues/16058.

需要 登录 后方可回复, 如果你还没有账号请 注册新账号