私はRuby on Rails. Unicode routesと似た質問をしていますが、ここで働いていると答えられています。Rails 3:ルート内のウムラウト(または他のユニコード)
ウムラウト(ä)を含むランディングページの基本的なルートを設定したいと考えています。それはSEOの目的のためにちょうどそうでなければなりません。
# encoding: UTF-8
Udb::Application.routes.draw do
get "bonitätsauskunft" => "landing_pages#credit_reference", :as => :lp_credit_reference
私は私のブラウザでhttp://localhost/bonitätsauskunft
を入力すると、私は、ルーティングエラーNo route matches "/bonit%c3%a4tsauskunft"
を取得します。 URLにウムラウトをエンコードする複数の方法があり、ブラウザがどちらを使用しているのかわからないため、クエリ文字列はエスケープされていないので、私は悪いと思う。
たとえば、CGI.escape("bonitätsauskunft") # => "bonit%C3%A4tsauskunft"
のように、Firefoxが送信するように、c3とa4の代わりに大文字のC3とA4に注意してください。
したがって、get CGI.escape("bonitätsauskunft")
とRack::Utils.escape("bonitätsauskunft")
の両方が一致しません。
私も運を試してみました:、
# encoding: UTF-8
class UmlautConstraint
def initialize(page)
@page = page
end
def matches?(request)
request.params[:page] == @page
end
end
Udb::Application.routes.draw do
get ":page" => "landing_pages#credit_reference", :constraints => UmlautConstraint.new("bonitätsauskunft")
get "bonitätsauskunft" => "landing_pages#credit_reference", :as => :lp_credit_reference
もちろんの第2の経路を、私が使用できるように、必要とされている:私の作品
get ":page" => "landing_pages#credit_reference", :as => :lp_credit_reference, :page => /bonitätsauskunft/
get ":page" => "landing_pages#credit_reference", :as => :lp_credit_reference, :constraints => {:page => /bonitätsauskunft/}
唯一のことは厄介ですRailsはUmlautConstraintをどのように満たすか分からないため、link_to("Bonitätsauskunft", :lp_credit_reference)
のようなリンクを作成するためにrouteという名前を付けました。
これを行うには、通常の簡単な方法はありませんか?私はレール3が今までには国際化のほうが良いと思っていました。
Rails 3.0.10、Ruby 1.9.2、Apache2 with passenger 3.0.7。
確かに両方のことをお考えですか? CGI.escape( "neugründungen")=> "landing_pages#startups"、:as =>:lp_startups CGI.escape( "neugründungen")=> "landing_pages#startups" – Jan