0

我有一个对象菜单项,由控制器提供给相应的视图模板。该对象有两个字段:标签和链接。

我在控制器中启动了这个对象,如下所示:

// 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") 中的第二项是一个字符串。当您调用 <%= 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) %> 

通常不推荐使用 Eval,但在这种情况下可能是您需要的。

于 2013-01-16T06:55:52.930 回答