簡體   English   中英

導軌中的外部鏈接路線

[英]External link routes in rails

很簡單。 在制作典型的Restful Rails應用程序時,我們會將所有路線保留在應用程序內部。 很少有路徑鏈接到外部路徑。 但是,如果我們要這樣做,我想知道最好的方法是什么。

房屋的典型搭配

match "home"=>"appcontroller#home"

如果我們將外部網址與路徑變量匹配。 我們可能會執行以下操作?

第一種方法

Routes.rb

match "external"=>"http:/www.google.ie"

然后在我們的html.erb中

<%= link_to 'Google', external_path %>

請注意,這實際上不是合法的處理方式,但可能存在類似的情況。 看起來非常類似於當前在軌道中定義路徑的方法,但是具有外部平台。

第二種方法

我在其他地方看到的東西是為外部URL創建一個全局變量,並在鏈接中使用它。 例如。 在environment.rb或production.rb或任何

@ext_path="http:/www.google.ie"

然后在我們的html.erb中

<%= link_to 'Google', @ext_path %>

因此,回顧一下。 在rails中使用外部URL的最佳方法是什么? 路徑? 變量? 其他? 任何輸入表示贊賞

我只會在視圖中保留外部鏈接。 因為此鏈接與應用程序的任何邏輯都不相關,而只是一個UI元素。

因此,這種方式對我來說似乎是最好的:

<%= link_to 'Google', "http://google.ie" %>

如果您需要多次使用此元素,則可以將此代碼帶入幫助器,例如:

def search_engine_link
  link_to 'Google', "http://google.ie"
end

我真的認為引入一個更復雜的邏輯不是一個很好的地方。

我可能會使用圍繞常量的應用程序范圍內的幫助程序。

幫助器,因為我寧願在模板中看不到常量,也不能看到特定於環境的值的常量。

我可能會使用散列來存儲URL:這使它們保持更緊密的耦合,並允許使用環境范圍的默認值,並在必要時覆蓋每個環境。

輔助程序可以采用符號或由哈希鍵生成,以生成xxx_path方法,就像routes.rb路由routes.rb

我發現自己需要這樣做,因為我有一個指向外部站點的鏈接,我打算將來將該站點建立為本地站點。

在Rails 4中,您可以將其添加到config/routes.rb

get '/contact', 
      to: redirect('http://www.example.com/contact.php'), 
      as: 'contact_us'

通過額外重定向,您可以編寫以下代碼:

<%= link_to "Contact us", contact_us_path %>

301-重定向

關於在路由文件中使用redirect(...)注釋。 Redirect生成301重定向,這是特定的事情,Google將其描述為...

如果您需要更改頁面的URL(如搜索引擎結果中所示),建議您使用服務器端301重定向。 這是確保將用戶和搜索引擎定向到正確頁面的最佳方法。 301狀態代碼表示頁面已永久移動到新位置。

因此,可以在路由中使用301重定向器來鏈接到外部網站,這種方法確實可以,但是該重定向器附帶的狀態信息不正確。

如果您已在網絡應用程序中移動了頁面並希望將其告知Google索引(以及其他所有人),則請務必使用redirect()來確保Google更新索引,但是使用標准外部索引並非最佳選擇鏈接出您的Web應用程序。

暫無
暫無

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

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