2017-03-14 4 views
0

私はRailsルーティングについて話しているが、私は専門家ではないと思う。RubyonRailsルートリダイレクト

私は2つのコントローラを持っています。 1つはWebアクション用、もう1つはAPIアクション用です。 Webコントローラの名前は「Story」で、Apiコントローラの名前は「Story」ですが、他の場所は「api/v1/Story」です。

ウェブストーリーコントローラに 'download_story'というメソッドがあります。コントローラの両方のためにされているルーティング(config.rb):

// Web controller routing 
get '/stories/download-story/:id', to: 'stories#download_story', as: :download_stroy 

// Api controller routing 
namespace :api, defaults: {format: 'json'} do 
    namespace :v1 do 
    get '/download/:id', to: 'stories#download_story', as: :download_story 
    end 
end 

質問は、「どのようにのparamsと共にAPIコントローラからWebコントローラのアクション(download_story)を呼び出すこと?」です私が試してみました何

です:WEB制御の '/小説/ download_story' にリダイレクトされ

// Api controller routing 
namespace :api, defaults: {format: 'json'} do 
    namespace :v1 do 
    get '/download/:id', to: redirect('/stories/download_story/%{id}') 
    end 
end 

。しかし、私は次の人にリクエストを送っています:

'curl 'localhost:3000/api/v1/download/1' 

私はただの反応しか伝えません。応答は:

<html><body>You are being <a href="http://localhost:3000/stories/download_story/:id">redirected</a>.</body></html> 

それ以降はありません。実際にはリダイレクトされません。

+0

'redirect_to download_story_path(params)' –

+0

でも 'download_story'の代わりに' download_stroy'があると思います。 –

+0

@DeepakMahakale、これはもう試しました。動作しませんでした。 2つの理由があります: - > paramsは受け入れられません。 - > redirect_toの代わりにリダイレクトする必要はありませんか? –

答えて

0

これを実証しました。

get '/download/:id', to: '/story#download_story 

これはストーリーコントローラのダウンロードアクションにリダイレクトされます。

関連する問題