【问题标题】:rails gsub questionrails gsub问题
【发布时间】:2010-09-28 10:05:58
【问题描述】:

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

我有以下表单域: 标题 网址 内容

我想在 url 字段上执行 gsub。

谢谢...

【问题讨论】:

    标签: ruby-on-rails gsub


    【解决方案1】:

    请记住,从 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
    

    控制器没有改变。

    【讨论】:

      【解决方案2】:

      如果您想修改标题,那么您可能会发现 Norman 的friendly_id 有一些用处:

      http://github.com/norman/friendly_id

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

      【讨论】:

      • 马特谢谢我让它工作了,这正是我想要的!
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 如何在控制器操作中进行设置?
        猜你喜欢
        • 2013-02-03
        • 2013-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多