免责声明我对 Ruby / Rails 很陌生
我正在使用RPH::Navigation创建我的导航菜单。我现在要做的是添加一些子导航项目,我这样做是这样的:
suboptions.each do |group|
def relpath
link(group[:link], group[:args]).
end
sub_menu.item group[:name], :path => :relpath
end
link
只是一个方法,它返回"#{link}?#{query_string}"
从哈希query_string
构建的位置。args
我最初想做的是
sub_menu.item group[:name], :path => link(group[:link], group[:args])
但是将返回值放入,然后调用它,返回方法未找到错误。
我目前的方法存在的问题group
不在relpath
. 我也尝试过使用Proc.new
and lambda
,但由于它们不像普通函数那样被调用,它也会阻塞它们。
我能做些什么来纠正这个问题?什么是正确的方法?
编辑
如果我做
suboptions.each do |group|
def relpath(group)
link(group[:link], group[:args]).
end
sub_menu.item group[:name], :path => relpath(group)
end
然后我得到的错误是:
undefined method `mylink?myarg=1' for #<#<Class:0x007fd8068acd58>:0x007fd8068b07f0>
编辑 2
这是更广泛的代码示例。
menu.item MyTestsController, :text => 'Test', :if => Proc.new { |view| view.can? :read, MyTest } do |sub_menu|
suboptions = [{:link => "tests", :name => "All Systems", :args => {:system_id => 0}},
{:link => "tests", :name => "System A", :args => {:system_id => 1}}]
suboptions.each do |group|
def relpath(group)
link(group[:link], group[:args]).
end
sub_menu.item group[:name], :path => relpath(group)
end
end