在url中有一个句点(。)会抛出Model.nil错误

时间:2015-04-13 20:24:53

标签: ruby-on-rails ruby url

使用Rails,我有一个模型“User”,其动作“Show”路由到users/:name。通常它工作正常,但是当名称中有句点(。)时,服务器无法再找到记录。例如,http/localhost:3000/Joe%20Jr.

我该如何解决这个问题?

routes.rb中:

get 'users/:name', to: "users#show", as: 'user'
get 'users/:id/edit', to: "users#edit", as: "edit_user"
resources :users

users_controller.rb:

def create
  #...
  redirect_to user_path
end

1 个答案:

答案 0 :(得分:3)

尝试您的路线

get 'users/:name', to: 'user#show', as: 'user', constraints: { name: /.*/ }

这让我们遇到了同样的问题。

感谢Avdi Grimm的博文“Rails 3 resource routes with dots; or, how to make a Ruby developer go a little bit insane”。