我想在谈论Rails路由时,我不是专家。
我有两个控制器。一个用于web操作,另一个用于api操作。 Web控制器被命名为'Story',Api控制器也被命名为'Story',但位于其他位置'api / v1 / Story'。
Web故事控制器中有一个名为'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
问题是“如何从api控制器和params调用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
哪个重定向到Web控制器的'/ stories / download_story'。但我发送请求:
'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 :(得分:0)
想出来了。应该完成:
get '/download/:id', to: '/story#download_story
这将重定向到故事控制器的下载操作。