【问题标题】:adding controllers with a namespace admin as a subfolder添加具有命名空间管理员的控制器作为子文件夹
【发布时间】:2012-03-03 22:53:44
【问题描述】:

我在 ROR 3.2 上有一个简单的 cms。 使用此文件夹方案:

应用程序 |控制器 |我的控制器

但我想有一个“管理”部分,在那里我也可以有一些控制器。 所以我创建了

rails 生成控制器管理员/用户

应用程序 |控制器 |管理员和我的管理员控制器

所以我的文件是:

users_controller.rb
class Admin::UsersController < ApplicationController

  def index
    render(:text => "sou o index!")
  end

  def list
    render(:text => "sou o list")
  end

end

在我的路线上:

namespace :admin do
    resources :users
  end

match ':controller(/:action(/:id))(.:format)'

我是 Rails 新手,我想不出解决方案。到处都找不到。

问题是 我尝试访问:

http://localhost:3000/admin/users/list

我得到这个错误:

未知动作 找不到动作“show” Admin::UsersController

【问题讨论】:

  • 那么,真正的问题是什么?
  • 您的“列表”操作应该做什么?这不是标准的 Rails REST 操作。
  • 为了调试,我只是尝试渲染一些文本,但如果我创建一个视图。
  • views/admin/users/list.html.erb,然后向浏览器输出一些东西,它给了我同样的错误。对于 localhost/admin/users,索引很好,如果我添加一个 show 方法,一切都很好。但我不知道为什么当我转到 localhost/admin/users/"something" 时,控制器假定它必须是一个 show 方法。

标签: ruby-on-rails namespaces


【解决方案1】:

您似乎不了解 Rails 的 RESTful 路由在默认情况下是如何工作的。我推荐阅读Resource Routing section of the Rails Guides。默认情况下,在您的路由中使用resources 时,show 操作用于显示特定模型记录。您可以customize this behavior 在一定程度上更改show 操作的URL,但不能更改模型中的方法名称:

resources :users, :path_names => { :new => 'list' }

如果您打算使用 RESTful 路由(您应该这样做),您应该删除默认路由 (match ':controller(/:action(/:id))(.:format)')。此外,您可以随时从终端运行rake routes 以查看有关您当前路由配置的详细信息。

【讨论】:

  • 好的,这是有道理的。我会阅读一些相关信息,因为这也是我很好奇的事情。谢谢。
  • 那些指南真的很有用。一切都按预期运行。谢谢
  • 很高兴听到,这些指南在某些地方没有深入,但是是一个很好的起点。
【解决方案2】:

但是,您在正确的轨道上还需要几个步骤来完成后端管理 CRUD 部分的解决方案。查看以下示例,了解如何自己创建它:

https://stackoverflow.com/a/15615003/2207480

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多