【问题标题】:Having a period (.) in url throws Model.nil error [duplicate]在 url 中有句点 (.) 会引发 Model.nil 错误 [重复]
【发布时间】:2015-06-19 07:12:40
【问题描述】:

使用 Rails,我有一个模型“用户”,其操作“显示”路由到 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

【问题讨论】:

标签: ruby-on-rails ruby url


【解决方案1】:

试试你的路线

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”。

【讨论】:

  • 约束中有一个小错字,应该是name,而不是fname
  • 奥利弗,你的权利。我从我们的代码中复制而没有仔细检查。应该是固定的。
  • 使用此代码,'users/:name' 有效,但现在 'users/:id/edit' 返回“找不到记录”错误。知道为什么,或者我该如何解决?我在我的问题中添加了这条路线。
  • 等一下,错误实际上来自用户#show!为什么 Users#edit 会突然使用来自 Users#show 的代码?
  • 可能有助于查看更多代码,但在您使用 :id 而不是 :name 在编辑路线中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
相关资源
最近更新 更多