2010-09-26 12 views
7

Ist es möglich, eine Unicode-Zeichenfolge als ein Segment eines Pfades in Rails festzulegen?Rubin auf Schienen. Unicode-Routen

Ich versuche folgendes:

 
    
# app/controllers/magazines_controller.rb 

class MagazinesController < ApplicationController 
    def index          
    end                   
end 
 
 
    
# encoding: utf-8 
# config/routes.rb 

PublishingHouse::Application.routes.draw do 
    resources :magazines, 
    :only => :index, 
    :path => :журналы # a Unicode string is set as a segment of the path 
end 
 
 
$ rake routes 
magazines GET /журналы(.:format) {:action=>"index", :controller=>"magazines"} 

Aber wenn ich auf den Weg gehen erhalte ich die Fehler Routing:

 
$ w3m http://localhost:3000/журналы 
... 

Routing Error 

No route matches "/%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D1%8B" 

Hier ist der Server-Log:

 
$ rails s thin 
... 

Started GET "/%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D1%8B" for 127.0.0.1 at 2010-09-26 13:35:00 +0400 

ActionController::RoutingError (No route matches "/%D0%B6%D1%83%D1%80%D0%BD%D0%B0%D0%BB%D1%8B"): 

Rendered /usr/local/lib/ruby/gems/1.9.1/gems/actionpack-3.0.0/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.2ms) 

Danke.

Debian GNU/Linux 5.0.6;

Ruby 1.9.2;

Ruby on Rails 3.0.0.

Antwort

11

Intereting, denke ich, dass Rails einen Patch dafür benötigen. Ich werde später mit jemandem von Core darüber sprechen. In der Zwischenzeit sollte folgendes funktionieren:

PublishingHouse::Application.routes.draw do 
    resources :magazines, 
    :only => :index, 
    :path => Rack::Utils.escape('журналы') # a Unicode string is set as a segment of the path 
end 
+0

Es funktioniert. Vielen Dank, ** Raggi **. – Shamaoke

+0

Es wird als eine Rails-Problem hier diskutiert: https://github.com/rails/rails/issues/3470 –