单独的rails辅助方法

时间:2011-04-22 15:48:58

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

我有几个带有关联辅助模块的控制器。我得到了一些辅助方法,它们在不同模块中的行为应该相似,这意味着:

module UserHelper
  ..
  def destroy(user)
    link_to t(:destroy_user), user ... 
  end
end

module PhotosHelper
  ..
  def destroy(photo)
    link_to t(:destroy_photo), photo ... 
  end
end

我不知道(意识到)默认情况下包含了所有这些帮助程序模块(我猜这是好的),并且无论你从哪个视图调用辅助方法都无关紧要。

将其余助手与当前控制器/视图分开的最佳方法是什么,以便在controller_name == 'photos'时仅使用PhotosApplication助手?

助手的概念对我来说并不是很清楚。如果所有助手已经混入,为什么不只有一个ApplicationController?它只是用于“逻辑分离”吗?

我的意思是,当然,有很多解决方法。但这只是我,还是真的觉得没有理由在全球范围内包括所有帮助者?

2 个答案:

答案 0 :(得分:3)

如果您在ApplicationController类中调用clear_helpers,则不会在不同的帮助程序类之间共享

  

<强> clear_helpers()

     

清除此类中的所有现有帮助程序,只保留与此类同名的帮助程序。

参考:http://api.rubyonrails.org/classes/AbstractController/Helpers/ClassMethods.html#method-i-clear_helpers

答案 1 :(得分:2)

您可以将常用方法放在ApplicationHelper上,并将资源作为参数传递。

然后,仅将特定辅助资源用于特定方法。

无论如何都可以共享的方法(助手)转到ApplicationHelper文件。