如何确保传递HTML友好参数?

时间:2013-03-29 12:38:55

标签: ruby-on-rails

Questions Tags

点击代码名称后,会转到/tagname

E.g。点击ruby会转到/ruby

但是,有些标记名称需要进行HTML转义(例如c#.net等)。

我该怎么做?

我尝试在我的控制器中执行params[:tag].html_safe,但是这样做不会,因为之前的params发送不正确。

E.g。当我点击c#标记(或者我在URL中手动输入c#)时,这就是日志的样子。

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

1 个答案:

答案 0 :(得分:1)

在标记模型中添加“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'宝石: https://github.com/norman/friendly_id