RubyonRails路由重定向

时间:2017-03-14 07:21:35

标签: ruby-on-rails

我想在谈论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>

之后什么都没有。它并没有真正重定向。

1 个答案:

答案 0 :(得分:0)

想出来了。应该完成:

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

这将重定向到故事控制器的下载操作。