2011-09-15 5 views

答えて

1

これを試してみてくださいを働いていると思ういけない:

# Allow downloading Web Service WSDL as a file with an extension 
    # instead of a file named 'wsdl' 
    map.connect ':controller/service.wsdl', :action => 'wsdl' 

私は私が使用しているルートなど、私は試合を使うべきか

を参照してくださいcan't :

match '/controller/service.wsdl' => 'controller#service.wsdl', :as => :wsdl 

私はあなたのコントローラがコントローラという名前ではないと推測しています。そうであれば、名前を変更して上記のルートも変更します。

+0

コントローラという名前のコントローラはありません。私はどのようにルートを作成する必要がありますか分かりません。私はアクションservice.wsdlとコントローラを見つけることができません –

+0

ここでは例です。 posts_controller.rbというコントローラがあるとします。そのコントローラーでは、wsdl(def wdsl ... end)という名前のメソッド(アクション)があります。その方法では、実行したいコードがあります。その場合、上記のルートは次のようになります:match '/ posts/wsdl' => 'posts#.wsdl'、:as =>:wsdl。 – jschorr

+0

私は、レール1.2.6からレール3にウェブサイトを更新しましたが、どこにも通じないこのルートがあります。 –

0

Rails 2のパラメータ化されたコントローラとアクションのジェネリックルートをより明示的なRails 3+フォーマットに変換するための良い解決策はありませんでした。私がやらなければならなかったことは、アプリ内のすべての順列を通り、私がサポートする必要があるすべての明示的なルートを追加することです。例えば、あなたのケースでは、wsdlアクションをサポートしているコントローラが3つあれば、それぞれにmatchまたはgetを使用して新しいルートを追加します。

get '/foo/service.wsdl' :to => 'foo#wsdl' 
get '/bar/service.wsdl' :to => 'bar#wsdl' 
get '/blah/service.wsdl' :to => 'blah#wsdl' 

あなたは上のすべてのアクションをサポートする必要がある場合には、さらに楽しくなります:ここで

は、すべてのWSDLアクションをサポートしていることをあなたはfoo_controller、bar_controller、およびblah_controllerを持っていたと仮定すると、それがどのように見えるかです彼らが使用するコントローラ:アクション。

誰かがより良い方法を持っていれば、私はより良い方法を聞くために(そして熱心に)開いています。

関連する問題