“”在URL中创建Heroku Rails错误

时间:2013-03-31 13:39:48

标签: html ruby-on-rails erb

我有一个简单的网络应用程序,允许用户创建项目。我查看了用户个人资料',但如果用户在其用户名中输入句点,则会尝试在URL中添加句点,然后在尝试加载个人资料时抛出错误。例如......

用户名:McClure创建用户/ McClure

用户名:.McClure会产生错误...

任何时候某个时段出现错误。我该怎么做才能阻止输入中的句号?

2 个答案:

答案 0 :(得分:0)

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

如果你有一个简单的用户模型,标准路线是/users/1/users/2等。现在,你可以使用友好的ID,而不是数字,而不是数字,但这些必须使URL友好,“slu”“。 slug是您正在使用的属性转换为友好ID以准备URL。

您当然可以创建自己的slug,但有一种非常简单的方法:将friendly_idquickstart 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