【问题标题】:Can I use api controller for other controller in Ruby on Rails我可以在 Ruby on Rails 中将 api 控制器用于其他控制器吗
【发布时间】:2015-09-24 10:16:11
【问题描述】:

我想创建一个 ruby​​ on rails 应用程序,它提供了一个 API 和一个门户。考虑到我们可以通过 api 和门户创建用户并让我们说 todo 条目。为了使其干燥,我想在其他控制器中使用 api 方法。所以当用户通过门户创建待办事项时,应该执行相应的api控制器的业务逻辑,而不是从那个控制器复制代码到待办事项控制器。另外我确实想要一个单独的 api 控制器,因为其他客户端(如手机)应该调用某个端点(如 %BASE_URI%/api/rest/v1/...)而不是不同的控制器。这可能吗?是否有任何最佳做法?

最好的问候 仪表盘

【问题讨论】:

    标签: ruby-on-rails ruby api controller


    【解决方案1】:

    你可以把你的通用代码拿走,变成助手

    module SomeHelper
        def your_method
            do_something
        end
    end
    
    class SomeController < ApplicationController
        include SomeHelper
    
        def method
           your_method 
        end
    end
    
    class AnotherController
        include SomeHelper
    
        def method
           your_method 
        end
    end
    

    您也可以在任何视图中使用辅助方法,而不包括

    请参阅文档 herehere

    【讨论】:

    • 所以这意味着我只需将特定于控制器的代码添加到实际控制器中(分别用于 api 渲染 json 和 todo 控制器渲染视图)。对我来说听起来很合理。但这不会产生重复的线框代码。业务逻辑将位于中心位置,这仍然是一件好事。我想到的是使用路由器。因此,当调用 todo 控制器时,它会被路由到 api,然后返回到 todo 控制器,在那里它可以处理来自 api 控制器的响应。这有意义吗?
    • 如果你想完全使用控制器方法,你可以重定向到必要的控制器方法,如answer
    • 感谢这对我帮助很大。我会更深入地研究它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多