簡體   English   中英

Ruby on Rails的link_to方法

[英]Ruby on Rails link_to method

我正在嘗試在導航欄中使用link_to方法,但是我顯然缺乏了解其實際工作原理的基礎知識。

<% link_to "Viral", @viral %>

我的印象是“病毒”是鏈接的標簽,但是我不知道@viral是什么。 該路由是否鏈接到控制器/視圖(即,病毒控制器和視圖),如果是,路由將是什么樣? 我正在嘗試為不同的文章創建類別頁面,並認為這將是最明顯的導航方式。

根據Rails的約定, link_to將模型實例轉換為URL,該URL鏈接到相應的RESTful show操作。

所以在你的例子中

<%= link_to "Viral", @viral %>

相當於

<%= link_to "Viral", viral_path(@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.

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