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