2012-01-08 15 views
2

私のアプリケーションでは、静的なページを作成したいと思います! (感嘆符)。たとえば:Railsを使用しています! (感嘆符)

/!/about 
/!/faq 

現在、私は私のroutes.rbファイルに接頭辞pagesを使用して、それが機能があります:私はpagesを交換する場合

# config/routes.rb 
get 'pages(/:action)' => 'pages', :as => :page 

これは、しかしなど、素晴らしい作品、そして正しいURLを生成します!で、ルートは失敗:

# config/routes.rb 
get '!(/:action)'... 

はここrake routesの出力です:

pages GET  /!(.:format)    {:controller=>"pages", :action=>"index"} 
page GET  /!/:action(.:format)  {:controller=>"pages"} 

ご覧のとおり、Railsはルートを生成しています。私は他のシンボル(のよう@)期待通りのルートが動作を使用する場合は、皮肉なことに

No route matches {:controller => "pages", :action => "about"} 

:私は私の意見では、これらの名前の経路のいずれかを使用しようとすると、しかし、私は、ルーティングエラーが発生します。なぜ私は私のルートで!感嘆符を使用することはできません:(私はgithubの上の問題を提出する必要がありますか。私は手動で{:controller => :pages, :action => :about}同じエラーのルートを指定した場合、それも失敗した

PS。

PSS直接訪問した場合のルートは実際に動作(/!/aboutは)正しいページをレンダリングします。URLヘルパーはちょうどそれが実際にリンク:(

+0

思想私は答えを持っていたが、その後、私は同じ問題に遭遇したとみなされています。感嘆符を削除すると、home_path()メソッドが機能します。それ以外の場合は、それを認識しません。誰かが答えを出さなければ、バグを報告するのは良い考えです。あなたの問題を解決するには、少なくともHTMLリンクを使用することをおすすめします。 – agmcleod

+0

Phew。少なくとも私は狂っていないことを知っています。私は本当に気持ち悪いHTMLリンクに頼らない方がいいです(特にHAMLを使っているので)。今は '@ '記号を代わりに使用しています:/。私は2日待って、賞金を稼ぎ、問題を提出します。私が絶対に確信していなければ、コアチームに負担をかけることはありません。 – sethvargo

+0

ええ、それは良い考えだと思います。もう1つのことは、リンクを使用して、感嘆符をinfrontに連結することです。それはずっとずっときれいではありませんが。 – agmcleod

答えて

4

RFC3986 Uniform Resource Identifier: Generic Syntax

2.2 Reserved Characters 

    reserved = gen-delims/sub-delims 

    gen-delims = ":"/"/"/"?"/"#"/"["/"]"/"@" 

    sub-delims = "!"/"$"/"&"/"'"/"("/")" 
      /"*"/"+"/","/";"/"=" 

としてから撮影を作成できません。そのため、パスに!を含めるべきではありません。

検索エンジンによってクロール可能なajaxウェブアプリケーションを作成するためのGoogleの#!構文を見たことがあります。

例えば、 https://twitter.com/#!/exampleUser

しかし、この場合、それはトリックです。

パスであるだけ「/」、そして残りは「アンカー」または「ハッシュ」

host = "twitter.com" 
path = "/" 
hash = "#!/exampleUser" 
+0

私はハッシュ・バンとその使用法を知っています。しかし、Railsではまだ私のルートで@、+、 - 、_、...を使用しています。私は '! 'を使用することはできません。 – sethvargo

関連する問題