【发布时间】:2010-09-28 10:05:58
【问题描述】:
创建新帖子时如何在控制器中将“”和“_”替换为“-”?
我有以下表单域: 标题 网址 内容
我想在 url 字段上执行 gsub。
谢谢...
【问题讨论】:
标签: ruby-on-rails gsub
创建新帖子时如何在控制器中将“”和“_”替换为“-”?
我有以下表单域: 标题 网址 内容
我想在 url 字段上执行 gsub。
谢谢...
【问题讨论】:
标签: ruby-on-rails gsub
请记住,从 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
控制器没有改变。
【讨论】:
如果您想修改标题,那么您可能会发现 Norman 的friendly_id 有一些用处:
http://github.com/norman/friendly_id
它会为您创建永久链接,因此您无需担心应用中的 url 重复或生成。它还将与 ActiveRecord 集成以覆盖查找方法。
【讨论】:
title.gsub(" ","-").gsub("_","-")
【讨论】:
title.gsub(/[\s_]+/, '-').strip
【讨论】: