0

のようなレコードがすでに作成されています

Company "Life"

種にこの記録を作成する方法

сompany-life

パラメータ化を使用しましたが、次のようになります。

company-quot-life-quot 

私が理解しているように.gsub(""", "")、例外のリストが大きすぎるため、実装には適していません

raw形式でレコードを作成する方法はありますか? (後でパラメータ化するため)

前もって感謝します!

4

4 に答える 4

1

Rails以外のアプローチは次のとおりです。

require 'cgi'

str = 'Company "Life"'

puts CGI.unescape_html(str).gsub(/"/, '').gsub(/\s+/, '-').downcase

# => company-life

そして、純粋な正規表現ソリューション:

puts str.gsub(/&\w+;/, '').gsub(/\s+/, '-').downcase
# => company-life

また、Rails 内にいる場合 (@nzifnab に感謝):

str.gsub(/&\w+;/, '').parameterize
于 2012-12-12T21:02:08.630 に答える
0

@meager が言ったように、そもそも html でエンコードされたエンティティをデータベースに保存するべきではありません"。理論的には、これは機能します:

class Page < ActiveRecord::Base
  before_validation :unescape_entities

  private
  def unescape_entities
    self.name = CGI.unescape_html(name)
  end
end

nameしかし、最初にhtmlエンティティを使用してどうやってそこにたどり着くのか、まだ興味があります。あなたのアクション/フォームはどのように見えますか?

于 2012-12-12T21:14:24.160 に答える
-1
"Company &quot;Life&quot;".gsub(/&[^;]+;/, "-").parameterize.downcase
# => "company-life"

まず、gsub が html エンティティを取り除き、次に parameterize が Ascii 英数字以外のすべてを取り除き (そしてそれらをダッシュ​​に置き換え)、次に小文字にします。「_」も保持されることに注意してください。それらが気に入らない場合は、別のものgsub('_', '-')が必要です。

于 2012-12-12T21:06:04.460 に答える
-1
"Company &quot;Life&quot;".html_safe.parameterize
于 2012-12-12T21:00:03.113 に答える