0

私は持っQuestionsていTagsます。

タグ名をクリックすると、 に移動します/tagname

たとえば、クリックすると に移動rubyします/ruby

ただし、HTML エスケープが必要なタグ名がいくつかあります (例: c#or.netなど)。

それ、どうやったら出来るの?

コントローラーでやってみparams[:tag].html_safeましたが、以前にパラメーターが間違って送信されていたため、それはできませんでした。

c#たとえば、タグをクリックすると (または手動でc#URL を入力すると) 、ログは次のようになります。

Started GET "/c" for 127.0.0.1 at 2013-03-29 07:31:46 -0500
Processing by HomeController#index as HTML
  Parameters: {"tag"=>"c"}
  Tag Load (26.7ms)  SELECT "tags".* FROM "tags" WHERE "tags"."name" = 'c' LIMIT 1

これは私のルートがどのように見えるかです:

get ':tag', to: 'home#index', as: :tag
4

1 に答える 1

1

Tag モデルに 'slug' 列を追加し、正規化された形式で名前を保存します。

class Tag < ActiveRecord::Base 
  before_create :build_slug

  def build_slug
    self.slug = name.parameterize
  end
end

「slug」列に一意のインデックスを追加し、Tag#find_by_slug でタグを検索します

または、「Friendly_id」gem をご覧ください: https://github.com/norman/friendly_id

于 2013-03-29T13:25:24.393 に答える