私は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>
それ以降はありません。実際にはリダイレクトされません。
'redirect_to download_story_path(params)' –
でも 'download_story'の代わりに' download_stroy'があると思います。 –
@DeepakMahakale、これはもう試しました。動作しませんでした。 2つの理由があります: - > paramsは受け入れられません。 - > redirect_toの代わりにリダイレクトする必要はありませんか? –