【问题标题】:Expose function in ruby on rails在 ruby​​ on rails 中公开函数
【发布时间】:2022-01-18 21:17:01
【问题描述】:

我正在查看一个 Rails 应用程序,在每个控制器的顶部都有一个看起来像这样的代码块

expose(:var) {Model.find params[:var_id]}

我了解块内的内容很好,但是...

我找不到任何关于 Expose 函数的来源的文档或我尝试搜索项目并使用可搜索的 Rails 文档的任何文档。

我很想知道它的作用,有人可以告诉我或将我指向文档。

【问题讨论】:

  • 这听起来像是一个自定义的、非 Rails 的东西。您是否在 application_controller 中查看过任何定义 expose 的内容?
  • 是的,def expose 的全球搜索结果为零

标签: ruby-on-rails-3


【解决方案1】:

expose 不是 Rails 的一部分,它来自 decent_exposure gem。


这不是问题的答案。我只是想让 Rails 世界变得更好一点,我希望有人能读到这篇文章。

在使用expose 之前请三思。只有当你 100% 确定你以正确的方式使用它并且它确实使代码更好时,你才应该使用它。正确阅读文档!

我参与的一个项目变得无法维护,因为控制器中的大量 expose 不仅替换了所有传递给视图的 @instance_variables,而且还替换了许多业务逻辑和大多数辅助方法。

当您使用expose 时,不清楚它在哪些控制器操作和哪些视图中使用。没有经验的开发人员将多个操作和多个视图的数据和逻辑组合在同一个expose 块中。 这是一场噩梦。

相信我,expose 如果使用不当真的会破坏项目。

【讨论】:

    【解决方案2】:

    这是来自Decent Exposure gem 的方法。您可以在Railscasts 上查看 Ryan Bates 制作的截屏视频。这真是一个很棒的宝石。我在我的应用程序中使用它。它减少了控制器层中的大量冗余。

    【讨论】:

      【解决方案3】:

      这可能是在引用decent_exposure gem。你可以在这里了解更多信息:http://railscasts.com/episodes/259-decent-exposure

      来源:https://github.com/voxdolo/decent_exposure

      【讨论】:

      • 链接到 9 分钟的视频不是答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多