免責事項私は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