我的问题与这个Rails friendly id with non-Latin characters密切相关。根据那里的建议答案,我实现了一个不同的解决方案(我知道,它是原始的,但我只想确保它在添加复杂行为之前有效)。
在我的用户模型中,我有:
extend FriendlyId
friendly_id :slug_candidates, :use => [:slugged]
def slug_candidates
[
[:first_name, :last_name],
[:first_name, :last_name, :uid]
]
end
def should_generate_new_friendly_id?
first_name_changed? || last_name_changed? || uid_changed? || super
end
def normalize_friendly_id(value)
ERB::Util.url_encode(value.to_s.gsub("\s","-"))
end
现在当我通过浏览器提交“مرحبا”:first_name时,数据库中的slug值设置为“%D9%85%D8%B1%D8%AD%D8%A8%D8%A7-”是我所期望的(除了尾随“ - ”)。
然而,浏览器中显示的网址如下所示:http://localhost:3000/en/users/%25D9%2585%25D8%25B1%25D8%25AD%25D8%25A8%25D8%25A7-,这不是我想要的。有谁知道这些额外的%25s来自哪里以及为什么?
答案 0 :(得分:0)
与此同时,我来得更远,所以我把解决方案放在这里也许对其他人有帮助。 url中的25s似乎是url_encoding我的slug中'%'的结果。我不知道这发生了什么,但我修改了我的normalize_friendly_id函数,所以它不再影响我了。这是:
bmi.bmiHeader.biHeight = - nScreenHeight;
对此有一些评论:
我感谢任何评论或改进建议。