2

新しい投稿を作成するときに、コントローラーで「」と「_」を「-」に置き換えるにはどうすればよいですか?

次のフォームフィールドがあります:タイトルURLコンテンツ

urlフィールドでgsubを実行したい。

ありがとう...

4

4 に答える 4

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

コントローラーは変更なし。

于 2010-09-28T12:02:03.413 に答える
0

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

于 2010-09-28T10:15:47.227 に答える
0

タイトルをスラッグしようとしている場合は、Norman の Friendly_id が役に立つかもしれません。

http://github.com/norman/friendly_id

パーマリンクの作成は自動的に行われるため、アプリでの URL の重複や生成について心配する必要はありません。また、ActiveRecord と統合して、find メソッドをオーバーライドします。

于 2010-09-28T10:44:11.573 に答える
0

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

于 2010-09-28T10:28:51.063 に答える