0

我有一个简单的网络应用程序,允许用户创建项目。我有一个“用户配置文件”的视图,但是如果用户在他们的用户名中输入一个句点,它会尝试在 URL 中添加一个句点,然后在您尝试加载配置文件时抛出一个错误。例如...

用户名:McClure 创建用户/McClure

用户名:.McClure 创建错误...

任何时候都有一个时期,它会出错。我应该怎么做才能防止输入中的句点?

4

2 回答 2

0

许多字符可能会导致您的网址出现错误。

如果你有一个简单的用户模型,标准的路由是/users/1,/users/2等等。现在,你可以使用友好的 id 来代替数字,比如用户名——但是这些必须是 URL 友好的,“slugged”。slug 是将您用作友好 id 的属性转换为 URL 就绪。

您当然可以创建自己的 slug,但有一种非常简单的方法:使用 gem friendly_id和本快速入门指南。这是一个railscast。此 gem 使用 slug 并为您生成它们 - 它甚至可以在 slug 更改时为您的模型保存 slug 的历史记录,以及许多其他不错的功能。

有了它,你可以做类似的事情

class User < ActiveRecord::Base
  extend FriendlyId
  friendly_id :username, use: :slugged
end

然后,您的用户名将以一种 URL 友好和人类可读的方式在 url 中使用。最好的部分是:您可以保留标准路线和用户名。

于 2013-03-31T13:49:38.033 回答
0

/\A[A-Za-z0-9]+\Z/在你的模型中一样使用正则表达式验证(这个只允许用户名的字母和数字):

class User < ActiveRecord::Base
  ...
  validates_format_of :username, :with => /\A[A-Za-z0-9]+\Z/
  ...
end

或者,在 Rails 4 中:

class User < ActiveRecord::Base
  ...
  validates :username, format: { with: /\A[A-Za-z0-9]+\Z/ }
  ...
end
于 2013-03-31T13:50:20.203 回答