从不同的控制器Rails 4.0访问其他操作

时间:2013-12-13 20:24:11

标签: model-view-controller routing ruby-on-rails-4 nested-routes

我有一个rails应用程序,其路线为:

  resources :users do
    resources :api_keys
  end

现在我有控制器和模型,并且所有测试都在通过 - 但我希望有一个已登录的用户去他们的个人开发中心,所以我创建了:

  resources :users do
    resources :api_keys
    resources :development_center
  end

问题是,虽然在这里我希望用户能够从api_keys控制器访问方法,即:我希望用户能够查看(显示),创建(创建)和销毁(破坏他们的api键来自development_center控制器的show动作(和视图)。

换句话说:

development_center show方法应该呈现show视图,对于该用户,应该能够创建和查看用户创建的API的键。

我还想阻止您在浏览器中导航到site.com/users/id/api_keys/id - 相反,它应该将您重定向到该用户的develop_center show方法。

我对嵌套路线的概念不熟悉并且一直在阅读the documentation on routing但我不清楚如何:

  1. 当您尝试访问任何用户/ id / api_keys / route
  2. 时重定向
  3. 在development_center视图中调用api_keys控制器操作,以允许您创建,显示和销毁自己的api密钥。

1 个答案:

答案 0 :(得分:2)

如果唯一的问题是您不喜欢网址中的api_keys,那么您可以更改路由配置中的路径:

resources :users do
  resources :api_keys, path: '/development_center'
end

通过这种方式,您可以继续使用ApiKeysController执行这些操作(因为您在逻辑上应该 - 因为您使用此控制器控制对API密钥的访问),但端点看起来像/users/:user_id/development_center