免责声明我非常新的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
和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>
EDIT 2
这里为t的更广泛的例子他编码。
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
':路径=>:relpath'?不应该是':path => relpath'? – oldergod
@oldergod:看到我的编辑。 – sberry
sub_menu类是什么?并且'item()'的API似乎是以错误的方式使用函数。 – oldergod