【问题标题】:Multiple Rails Helpers w/ Same Method Name具有相同方法名称的多个 Rails 助手
【发布时间】:2011-06-09 06:18:17
【问题描述】:

我有两个不同的帮助文件(photos_helper 和 cmets_helper),其中有一个名为 actions_for 的方法。如何显式调用我需要的辅助方法?我知道我可以只重命名其中一个,但我希望它们保持不变。我试过PhotosHelper::actions_for,但这似乎不起作用。

【问题讨论】:

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


    【解决方案1】:

    在 Rails 3 中,总是包含所有助手(在 Rails 3.1 中,存在一个补丁以选择性地再次允许助手)。幕后发生了什么:

    class YourView
      include ApplicationHelper
      include UserHelper
      include ProjectHelper
    
      ...
    end
    

    因此,根据 Rails 包含它们的顺序,将使用您的任何 actions_for 方法。您无法明确选择其中之一。

    如果您必须显式调用ProjectHelper.action_for,您也可以将您的方法命名为project_action_for - 最简单的解决方案。

    【讨论】:

      【解决方案2】:

      将它们都设为Class Method

      module LoginsHelper
        def self.your_method_name
          "LoginsHelper"
        end
      end
      

      module UsersHelper
        def self.your_method_name
          "UsersHelper"
        end
      end
      

      然后在视图中

         LoginsHelper.your_method_name #Gives 'LoginsHelper'
      

         UsersHelper.your_method_name #Gives 'UsersHelper'
      

      【讨论】:

      • 但是这不允许访问任何其他“常规”ActionView::Helper 方法,例如那里的 link_to、_url、image_tag。
      猜你喜欢
      • 2014-02-03
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      相关资源
      最近更新 更多