我有一个简单的网络应用程序,允许用户创建项目。我查看了用户个人资料',但如果用户在其用户名中输入句点,则会尝试在URL中添加句点,然后在尝试加载个人资料时抛出错误。例如......
用户名:McClure创建用户/ McClure
但
用户名:.McClure会产生错误...
任何时候某个时段出现错误。我该怎么做才能阻止输入中的句号?
答案 0 :(得分:0)
许多字符可能会导致您的网址出错。
如果你有一个简单的用户模型,标准路线是/users/1
,/users/2
等。现在,你可以使用友好的ID,而不是数字,而不是数字,但这些必须使URL友好,“slu”“。 slug是您正在使用的属性转换为友好ID以准备URL。
您当然可以创建自己的slug,但有一种非常简单的方法:将friendly_id与quickstart guide一起使用。这是一个railscast。这个宝石使用slugs并为你生成它们 - 它甚至可以在slu the改变时保存模型的slu history历史,以及许多其他不错的功能。
有了它,你可以做类似
的事情class User < ActiveRecord::Base
extend FriendlyId
friendly_id :username, use: :slugged
end
然后,您的用户名将以URL友好和人类可读的方式在网址中使用。最好的部分是:您可以保留标准路线和用户名。
答案 1 :(得分: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