0

コントローラが対応するビューテンプレートで利用できるオブジェクトメニュー項目があります。このオブジェクトには、ラベルとリンクの2つのフィールドがあります。

私はコントローラーで次のようにこのオブジェクトを開始しました:

// first param is for label and second for link.
menuitem = MenuItem.new("Hello","Say_hello_path") 

ビューテンプレートで、これを入力しています。

<%= link_to menuitem.label, menuitem.link %>

これにより、次の結果が得られると思います。<a href="/say/hello">Hello</a>

しかし、私は得ています:<a href="Say_hello_path">Hello</a>

私は何が間違っているのですか?期待される結果を達成するためのより良い方法はありますか?

4

2 に答える 2

1

インスタンス変数のみがビューバッグに追加されます。したがって、両方のファイルで、menuitemを@menuitemに変更する必要があります。

それ以外は、say_hello_pathは文字列ではなく関数であるため、引用符を削除し、おそらくすべて小文字にする必要があります。

于 2013-01-16T06:55:41.150 に答える
1

MenuItem.new( "Hello"、 "Say_hello_path")の2番目の項目は文字列です。<%= link_to menuitem.label、menuitem.link%>を呼び出すと、文字列を入力するだけです。

あなたは以下を試すことができます

// first param is for label and second for link.
@menuitem = MenuItem.new("Hello", say_hello_path) 

または、link_toの文字列を評価することもできます(メソッド名の大文字と小文字を修正する必要があります)。

<%= link_to @menuitem.label, eval(@menuitem.link) %> 

通常、評価は推奨されませんが、この場合は必要になる場合があります。

于 2013-01-16T06:55:52.930 に答える