friendly_id
이 올바르게 설정되어 있고 모든 것이 작동하며 슬러그를 사용합니다.FriendlyID가 HTML 이스케이프 처리 된 슬러그를 만들지 않습니다
내가 겪고있는 문제는 Tag
모델 (FriendlyId가 첨부 된 모델)의 일부 이름이 HTML 이스케이프 처리되어야한다는 것입니다.
c++
또는 .net
과 같은 이름. 내가 Tag.find_each(:&save)
실행하면
, 그것은 나를 위해 모든 굼벵이를 생성 .... 그러나 그 이름을 가진 해당 태그에,이 무슨 일이 있었는지입니다 :
> c = Tag.where(:name => "c++")
Tag Load (0.9ms) SELECT "tags".* FROM "tags" WHERE "tags"."name" = 'c++'
=> [#<Tag id: 2, name: "c++", num_questions: 187598, created_at: "2013-03-23 07:02:09", updated_at: "2013-03-29 15:34:09", questions_count: 87, slug: "c">]
> Tag.where(:name => ".net")
Tag Load (0.9ms) SELECT "tags".* FROM "tags" WHERE "tags"."name" = '.net'
=> [#<Tag id: 142, name: ".net", num_questions: 149074, created_at: "2013-03-23 07:09:47", updated_at: "2013-03-29 15:34:10", questions_count: 85, slug: "net">]
1.9.3p392 :012 > Tag.where(:name => "c#")
Tag Load (1.0ms) SELECT "tags".* FROM "tags" WHERE "tags"."name" = 'c#'
=> [#<Tag id: 38, name: "c#", num_questions: 435620, created_at: "2013-03-23 07:03:27", updated_at: "2013-03-29 15:34:10", questions_count: 130, slug: "c--3">]
주의 사람들의 각각의 굼벵이 - 방법 각 레코드의 name
에 제대로 대응하지 않습니다.
어떻게 수정합니까?
수호 .... 그런 복잡함을 느끼지 않고 ... 원하는 단순한 이름을 어떻게 허용합니까? – marcamillion
URL에 굼벵이가 나타나야한다고 가정합니까? 그렇다면 어떻게 이러한 "문제 캐릭터"를 처리하기를 원하십니까? 특히'# '기호의 경우,이를 대체하거나 URL 인코딩해야합니다. –
정확하게 지적했듯이,'normalize_friendly_id'는 문자열에서'parameterize'를 호출합니다 - https://github.com/norman/friendly_id/blob/master/lib/friendly_id/slugged.rb#L244 내가 원하는 것 그렇게하려면이 문자열을 작동시키는 것입니다. 필자의 레일즈 콘솔에서'C# .parameterize'를 실행하면'> "C#"가됩니다. 파라미터 화 => "c"'내가 원하지 않는 것은 정확히 무엇입니까. – marcamillion