新しい投稿を作成するときに、コントローラーで「」と「_」を「-」に置き換えるにはどうすればよいですか?
次のフォームフィールドがあります:タイトルURLコンテンツ
urlフィールドでgsubを実行したい。
ありがとう...
新しい投稿を作成するときに、コントローラーで「」と「_」を「-」に置き換えるにはどうすればよいですか?
次のフォームフィールドがあります:タイトルURLコンテンツ
urlフィールドで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
コントローラーは変更なし。
title.gsub(" ","-").gsub("_","-")
タイトルをスラッグしようとしている場合は、Norman の Friendly_id が役に立つかもしれません。
http://github.com/norman/friendly_id
パーマリンクの作成は自動的に行われるため、アプリでの URL の重複や生成について心配する必要はありません。また、ActiveRecord と統合して、find メソッドをオーバーライドします。
title.gsub(/[\s_]+/, '-').strip