4

Railsの古いバージョンでは、次のようなピリオド(通常はフォーマットから分離するために予約されているもの)を含むパラメーターを持つことができます。

map.connect 'c/:domain.:format', :controller=>'home', :action=>'click_credit', :requirements => { :domain => %r([^/;,?]+) }

(ここに素敵なチュートリアル)

ただし、Rails(2.3.x)の最新バージョンでは、これが失敗することがわかります-:domainはすべてをキャッチしており、/ c / amazon.com.htmlのリクエストが来ると、:formatは空白になります

それを変更する方法について何かアイデアはありますか?

ありがとう、トム

4

2 に答える 2

3

Rails 3 にアップグレードすると、問題が解決するはずです。Rails 3 であなたのルートを試してみたところ、うまくいきました (新しいルーティング構文を使用するようにマイナーな変更を加えました):

match 'c/:domain.:format', 
      :controller=>'home', 
      :action=>'click_credit', 
      :domain => %r([^/;,?]+)
# 'c/amazon.com.html' => domain: amazon.com , format: html

Rails 3 にアップグレードできない場合は、これが役立つ可能性があります。この回答によると、:requirementsハッシュが原因である可能性があると思います。このルートを試して、それが機能するかどうかを確認してください。

map.connect 'c/:domain.:format', 
            :controller=>'home', 
            :action=>'click_credit', 
            :domain => %r([^/;,?]+)
于 2010-12-22T08:56:30.883 に答える
-1

ドメインをスラッグに変更し、[ピリオド] を [スラッシュ] に置き換える必要があります。

その理由は、ブラウザが . ファイルタイプを定義する必要があり、これを回避することはできません。

この宝石を使用して、簡単に作成してください。

于 2010-12-22T08:28:04.793 に答える