Rails gsub 问题

发布于 2024-09-24 21:29:56 字数 109 浏览 4 评论 0原文

创建新帖子时,如何在控制器中将“”和“_”替换为“-”?

我有以下表单字段: 标题 网址 content

我想在 url 字段上执行 gsub。

谢谢...

How can i replace " " and "_" with "-" in my controller when creating a new post?

I have the following form fields:
title
url
content

I want to execute the gsub on the url field.

Thanks...

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

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

发布评论

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

评论(4

腹黑女流氓 2024-10-01 21:29:56

请记住,从 URL 中删除空格和“_”是不够的,因为还有一些其他字符可能会破坏您的 HTML 代码,甚至导致脚本注入。 <>'"/\

我建议传递所有字母和数字 - 其他所有内容都会转换为 -

class Post < ActiveRecord::Base
  attr_protected :url
  validates_presence_of :title
  before_create :generate_url 

  private
    def generate_url
      self.url = title.strip.downcase.gsub(/[^a-z0-9]+/,'-')
    end
end

控制器保持不变。

Remember that getting rid of space and "_" from URL is not enough as there are some other characters which my break your HTML code and even cause script injection. <>'"/\.

I suggest passing all letters and numbers - everything else translate to -.

class Post < ActiveRecord::Base
  attr_protected :url
  validates_presence_of :title
  before_create :generate_url 

  private
    def generate_url
      self.url = title.strip.downcase.gsub(/[^a-z0-9]+/,'-')
    end
end

Controller is unchanged.

从﹋此江山别 2024-10-01 21:29:56

如果你想打败这个标题,那么你可能会发现 Norman 的Friendly_id 有一些用处:

http://github.com /norman/Friendly_id

它会为您创建永久链接,因此您无需担心应用程序中网址的重复或生成。它还将与 ActiveRecord 集成以覆盖查找方法。

If you're trying to slug the title, then you may find Norman's friendly_id of some use:

http://github.com/norman/friendly_id

It'll take care of creating permalinks for you, so you won't need to worry about duplication or generation of the url in your app. It'll also integrate with ActiveRecord to override the find methods.

向地狱狂奔 2024-10-01 21:29:56

title.gsub(" ","-").gsub("_","-")

title.gsub(" ","-").gsub("_","-")

梦魇绽荼蘼 2024-10-01 21:29:56

title.gsub(/[\s_]+/, '-').strip

title.gsub(/[\s_]+/, '-').strip

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文