【问题标题】:Rails Take all actions in the controllers in areaRails 在区域内的控制器中执行所有操作
【发布时间】:2016-01-28 12:57:29
【问题描述】:

在我的 Rails 应用程序中,我添加了一个带有控制器的“api”区域

在 route.rb 文件中 我添加区域

namespace :api do
   #get "dashboard/sales_rate"
  end

控制器类:

class Api::DashboardController < Api::ApplicationController
 before_filter :authenticate_user!

  def user_service
    render :json => {"user_id" => current_user.id}
  end

路径是: app/controllers/api/dashboard_controller

我的问题是我是否可以让路线采取所有行动

例如 /api/dashboard/user_service 而且我不会为 route.rb 页面上的每个路由行添加

/api/{controller_under_api_namespace}/{action}

【问题讨论】:

  • 您可以使用旧的/dashboard/:action 语法或其他任何语法。不过,可以说为这些人添加宁静的路线是一个更好的主意。
  • 是否有 UserService 资源?目前还不清楚你想将宁静的路线应用于什么。
  • 不,它不平静地使用特定名称路由其许多操作我尝试所有这些选项都没有成功命名空间:api do #match '/dashboard/:action' match '/dashboard/(:action(/ :id))' #match '/dashboard(/:action(/:id))' 结束

标签: ruby-on-rails ruby ruby-on-rails-3 routes


【解决方案1】:

你可以做一些元编程!

Api.constants.each |c|
  c.action_methods.each do |action|
    get [c.controller_name, action].join('/')
  end
end

此方法仅限于GET 请求。您可以通过 RESTful 路由来克服它。

Api.constants.each |c|
  resources c.controller_name.to_sym
end

希望,这会有所帮助。 :)

【讨论】:

  • 对不起,我不是 Rails 专业人士,我需要在哪里编写此代码,其次,如果我编写控制器,我可以获得所有操作?
  • 它将进入routes.rb 文件中的namespace :api 行。是的,第一种方法将处理来自控制器的所有操作。但它只会是GET 方法。
【解决方案2】:

我尝试在 route.rb 文件中添加代码

我收到了这个错误

这是我的文件

但在尝试修复这部分代码之前,我想知道它是否可以改变性能或对这些页面的调用?

如果对性能不好,我会保留此选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    相关资源
    最近更新 更多