簡體   English   中英

Rails + Slim:如何在控制器和動作名稱中使用link_to標簽; 並在錨標記中嵌套內容

[英]Rails+Slim: How to use link_to tag with controller & action name; and nested content in the anchor tag

這就是我現在所擁有的:

li
  = link_to {:controller => "controllername", :action => "actionname"}
    span.glyphicon.sidebar-icon.glyphicon-ok-circle
    span   WhoHas

但是,這將無法正常工作,因為link_to期望它的第一個參數是anchor標記內的內容。 我想要的錨標記內的內容是以下span塊。

任何幫助將非常感激!

你這樣說:

但是,這將無法正常工作,因為link_to期望它的第一個參數是anchor標記內的內容。

這不是真的。 link_to也可以接受一個塊,它將使用該塊的內容:

link_to("/path/to/thing") do 
  "My link"
end

並且,因此,不需要將第一個參數用作鏈接的文本。 該文檔列出了以下簽名:

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

最后兩個選項是您要尋找的。

但是,代碼不起作用的真正原因是因為您使用的括號不帶括號-基本上, method { :hello => "world" }並沒有達到您的預期。 method { }語法是為塊保留的,因此期望塊的內容-它找不到。 而是找到保留用於哈希的鍵值關聯。 本質上,Ruby嘗試將其解釋為一個塊,但失敗了。 因此,您的選擇是用括號將其封裝起來,例如: method({ :hello => "world" }) ,或者放下括號,例如: method :hello => "world" 您還需要在link_to的末尾添加一個do ,以使內容成為一個塊,因此您的代碼現在如下所示:

li
  = link_to :controller => "controllername", :action => "actionname" do
    span.glyphicon.sidebar-icon.glyphicon-ok-circle
    span   WhoHas

希望能有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM