【问题标题】:How to define Rails Helper for one specific action?如何为一项特定操作定义 Rails Helper?
【发布时间】:2011-08-21 18:52:52
【问题描述】:

我有一个带有自定义 label_tag 方法的 LabelTagHelper,但我只需要在我的 newcreateedit更新操作。

有没有办法只为特定操作定义这个助手?像helper :label_tag, :only => [:new, :create, :update, :destroy] 这样的东西?或者在 before_filter 中调用 self.class.helper :label_tag 是否安全?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 controller helpers


    【解决方案1】:

    rails Helpers 应该只是格式化程序。将其视为装饰您的表示层(视图)的函数

    因此,将助手设置为 :before_filter 没有任何意义。由于控制器操作通常涉及一些服务器端处理。

    所以,当你需要的时候,打电话给你的助手。因此,无需仅为特定操作添加助手。正如我之前提到的,助手和控制器/模型动作应该是互斥的

    顺便说一句,您能否详细说明您的要求,为什么要限制您的助手

    HTH

    同人

    【讨论】:

    • 对不起,我想你误解了我的意思。在我的 index 视图中,我想使用内置的label_tag,但对于其他操作,我想使用我自己的帮助器来覆盖内置的label_tag。不,我不会重命名我的助手。 ;)
    • 啊...好的,现在我明白了您的问题...我也会尝试一种方法。同时,如果您找到解决方案,请在此处发布对不起..:D
    【解决方案2】:

    试试这个,

    有一个这样的辅助方法(在我的例子中,我使用了一个名为“ProjectsHelper”的辅助方法)

    module ProjectsHelper
      def label_tag *params
        if controller.action_name == "index"
          #user custom implementation
        else
          super
        end
    
      end
    end
    

    这是有效的......希望这是你需要的,

    干杯

    HTH

    同人

    注意:很抱歉没有更新现有答案。由于这是一种全新的方法,因此可以将其作为单独的答案

    【讨论】:

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