这就是我现在所拥有的:
li
= link_to {:controller => "controllername", :action => "actionname"}
span.glyphicon.sidebar-icon.glyphicon-ok-circle
span WhoHas
然而,这不会起作用,因为link_to
期望它的第一个参数是锚标记内的内容。我在锚标记内的内容是以下span
块。
非常感谢任何帮助!
答案 0 :(得分:7)
你这样说:
然而,这不起作用,因为link_to期望它的第一个参数是锚标记内的内容。
事实并非如此。 link_to
也可以接受一个块,它将使用块的内容代替:
link_to("/path/to/thing") do
"My link"
end
因此,不需要将第一个参数用作链接的文本。 The documentation列出以下签名:
link_to(body, url, html_options = {})
# url is a String; you can use URL helpers like
# posts_path
link_to(body, url_options = {}, html_options = {})
# url_options, except :method, is passed to url_for
link_to(options = {}, html_options = {}) do
# name
end
link_to(url, html_options = {}) do
# name
end
最后两个选项是您正在寻找的。 p>
然而,你的代码不起作用的真正原因是因为你使用没有括号的大括号 - 基本上,method { :hello => "world" }
没有做你认为它做的事情。 method { }
语法是为块保留的,所以它期望一个块的内容 - 它找不到。相反,它找到了一个为哈希保留的键值关联。从本质上讲,Ruby试图将其解释为块,但失败了。所以你的选择是用括号括起来,如:method({ :hello => "world" })
,或者删除大括号,如下所示:method :hello => "world"
。您还需要在do
的末尾添加link_to
以使内容成为块,因此您的代码现在看起来像这样:
li
= link_to :controller => "controllername", :action => "actionname" do
span.glyphicon.sidebar-icon.glyphicon-ok-circle
span WhoHas
希望有所帮助。