Rails:“标准化”方法用户输入的url?

发布于 2024-11-19 23:52:50 字数 401 浏览 2 评论 0原文

我希望 Rails 应用程序中的用户能够在其个人资料中共享指向其个人网站的链接。很简单,我有一个名为 website 的列和一个他们可以填写以使其正常工作的文本字段。

但是,当我在视图中显示它时出现问题。如果我使用 link_to 帮助程序,则该人是否包含 http:// 决定该网址是否有效。但是,如果我自动在前面加上 http:// ,那么对于将其放入网址的用户,我会得到两次。

我确信这是一个相当常见的问题,但我找不到任何好的博客文章或解决该问题的问题。

我的问题是:您如何处理应用中用户输入的 URL?您会推荐什么作为最用户友好的方法来标准化最终存储在数据库中的网址?

谢谢!

I'd like Users in my Rails app to be able to share a link to their personal website in their profile. Simple enough, I have a column called website and a text field they can fill in to make it work.

However, when I display this in a view there's a problem. If I use the link_to helper then whether or not the person included the http:// determines whether or not the url will work. But, if I automatically prepend http:// then I get it twice for users who DID put it in their url.

I'm sure this is a fairly common problem, but I haven't been able to find any good blog posts or SO questions that address it.

My question is: How do you handle URL input from users in your apps? What would you recommend as the most user-friendly way to standardize the urls that end up being stored in the db?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅忆 2024-11-26 23:52:51

如果我正确理解您的问题,我可能会确保每当用户保存数据时,它都会使用如下所示的内容检查并修改(如果需要)网站属性。

class User
  before_save :sanitize_website

  def sanitize_website
    unless self.website.include?("http://") || self.website.include?("https://")
      self.website = "http://" + self.website
    end
  end
end

If I understand your problem correctly I would probably make sure that whenever a user saves their data it checks and modifies (if needed) the website attribute using something like the following.

class User
  before_save :sanitize_website

  def sanitize_website
    unless self.website.include?("http://") || self.website.include?("https://")
      self.website = "http://" + self.website
    end
  end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文