2013-01-16 53 views
0

我有一個對象菜單項由控制器提供給相應的視圖模板。該對象有兩個字段:標籤和鏈接。Rails 3.2.x:如何在我的視圖模板中調用link_to中的變量?

我發起這個對象像控制器以下內容:

// 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>

什麼是我做錯了?有沒有更好的方法來達到預期的效果?

回答

1

MenuItem.new中的第二項(「Hello」,「Say_hello_path」)是一個字符串。當您撥打<%= link_to menuitem.label,menuitem.link%>時,它只是放入字符串。

你可以嘗試以下

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

或者,你可以嘗試EVAL中的link_to字符串(你需要修復的方法名稱的情況下)。

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

Eval通常不被推薦,但可能是您在這種情況下需要的。

+0

謝謝!有效。 – Satish

1

只有實例變量被添加到視圖包中。因此,在這兩個文件中,您需要將menuitem更改爲@menuitem。

除此之外,say_hello_path是一個函數,而不是一個字符串,所以你應該刪除引號,並可能使它全部爲小寫。

相關問題