Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 调用rails3上的方法查看hepler问题_Ruby On Rails_Helper - Fatal编程技术网

Ruby on rails 调用rails3上的方法查看hepler问题

Ruby on rails 调用rails3上的方法查看hepler问题,ruby-on-rails,helper,Ruby On Rails,Helper,我有两个视图助手 module Admin::CategoriesHelper def test return "a" end module CategoriesHelper def test return "b" end 我在views/admin/categories/index.html.erb中调用测试方法 ==========================================================

我有两个视图助手

module Admin::CategoriesHelper
    def test
       return "a"
    end


module CategoriesHelper
    def test
       return "b"
    end
我在views/admin/categories/index.html.erb中调用测试方法

====================================================================

如果我使用Admin::CategoriesHelper.test,它将抛出类似以下错误:

NoMethodError in Admin/categories#index
Showing /home/mlzboy/my/b2c2/app/views/admin/categories/index.html.erb where line #32 raised:

undefined method `my_new_admin_category_path' for Admin::CategoriesHelper:Module
Extracted source (around line #32):

29: 
30: <br />
31: 
32: <%= link_to 'New Category', Admin::CategoriesHelper.my_new_admin_category_path(@parent) %>
您的Admin::CategoriesHelper和CategoriesHelper都会加载并显示在视图中。这意味着最后加载的模块将被执行

为了说明我的观点,您的视图加载了以下帮助程序:

class MyView
  include Helper1
  include Helper2
end
Helper1和Helper2都包括方法测试。在这种情况下,当您运行MyViewtest时,它将执行Helper2test。Helper1测试已被覆盖,无法访问

因为ActionView或任何负责加载帮助程序的工具都会以任意顺序加载帮助程序,所以您会遇到麻烦

我的解决方案是在命名空间模块中为方法添加前缀:

module CategoriesHelper
  def test
  end
end

module Admin::CategoriesHelper
  def admin_test
  end
end

我已经重命名为admin_test,它可以通过admin_test调用,为什么它不能通过admin::CategoriesHelper.admin_test调用?我还有另一个相关的问题,它是否输出,但我希望是错误的?
module CategoriesHelper
  def test
  end
end

module Admin::CategoriesHelper
  def admin_test
  end
end