[英]Ruby on Rails link_to method
我正在嘗試在導航欄中使用link_to方法,但是我顯然缺乏了解其實際工作原理的基礎知識。
<% link_to "Viral", @viral %>
我的印象是“病毒”是鏈接的標簽,但是我不知道@viral是什么。 該路由是否鏈接到控制器/視圖(即,病毒控制器和視圖),如果是,路由將是什么樣? 我正在嘗試為不同的文章創建類別頁面,並認為這將是最明顯的導航方式。
@viral只是路徑。
如果您有這樣定義的路線:
get "viral", as: "something#viral" => "viral"
那么您應該在<%= link_to "some text", viral_path %>
鏈接,該鏈接將自動定向到www.domain.com/viral。
如果您有特定的網址,則應在域后用引號將該網址引起來。 因此,如果您的域名是www.domain.com,而您想重定向到www.domain.com/viral,則應編寫
<%= link_to "some text", "viral" %>
@viral
是變量(對象)
link_to
是使HTML鏈接有效的輔助方法
<%= link_to "Viral", @viral %>
將建立鏈接以顯示操作,但是如果您需要設置其他路徑,請使用:
<% link_to "Viral", viral_path %>
您可以在終端中看到的所有路徑
rake routes
您的link_to
需要傳遞以下信息:
<%= link_to "Link Text", "http://link-path.com" %>
第一個參數是錨文本,第二個參數是瀏覽器將請求的URL。
由於Rails是一個應用程序框架,因此可以將動態值傳遞給link_to
參數。 就像是...
#app/helpers/application_helper.rb
def your_link_helper
"http://google.com"
end
<%= link_to "Link Text", your_link_method %>
如果理解了這一點,您將了解Rails為“ routes”設置了一系列“ helper”方法 ,這意味着您可以使用...而不是your_link_method
(上面)。
#config/routes.rb
resources :virals
<%= link_to "Viral", viral_path("12") %>
-
所以...
@viral
是一個實例變量 -在類實例(在本例中為您的控制器)的實例期間設置的變量:
#app/controllers/virals_controller.rb
class ViralsController < ApplicationController
def show
@viral = Viral.find params[:id]
end
end
因為Ruby是面向對象的 ,所以它希望每個@instance_variable
都是Ruby分配的對象 。
這意味着,如果將有效的Ruby對象傳遞給link_to
方法,Rails將提取所有必需的數據以為其調用show動作。
<%= link_to @viral.id, @viral %>
...實際上將是...
<%= link_to @viral.id, viral_path(@viral.id) %>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.