我正在嘗試在我的導航欄中使用link_to方法,但我明顯缺乏瞭解其實際工作原理的基礎知識。Ruby on Rails link_to方法
<% link_to "Viral", @viral %>
我的印象是「病毒」是鏈接的標籤,但我不知道什麼是病毒。該路線是否與控制器/視圖鏈接(即病毒控制器&視圖),如果是,那麼路線將是什麼樣子?我正在試圖爲不同的文章創建分類頁面,並認爲這將是最明顯的導航方式。
我正在嘗試在我的導航欄中使用link_to方法,但我明顯缺乏瞭解其實際工作原理的基礎知識。Ruby on Rails link_to方法
<% link_to "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 sets a series of "helper" methods for your "routes",這意味着,而不是(以上)your_link_method
,你就可以使用...
#config/routes.rb
resources :virals
<%= link_to "Viral", viral_path("12") %>
-
所以...
@viral
是一個instance variable - 在類的實例(在這種情況下,您的控制器)設置的變量:
#app/controllers/virals_controller.rb
class ViralsController < ApplicationController
def show
@viral = Viral.find params[:id]
end
end
由於Ruby是object orientated,它期望每個@instance_variable
是由紅寶石分配一個對象。
這意味着,如果你通過一個有效的Ruby對象到link_to
方法,Rails會提取所有必要的數據調用顯示它行動......
<%= link_to @viral.id, @viral %>
...居然會是...
<%= link_to @viral.id, viral_path(@viral.id) %>
它可能會清除你的疑慮:http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to – RAJ
我已經通過的文件看(這是我得到了一段代碼fr嗡,首先)但我正在尋找一個更容易理解的解釋。來自一個地方從小到沒有紅寶石或鋼軌的經驗,API往往最終相當混亂。 –