簡體   English   中英

Rails - only_path 為鏈接提供完整的 URL。 如何獲取 link_to 之外的變量?

[英]Rails - only_path provides the full URL for a link. How can you obtain the variable outside of link_to?

使用 link_to 時:

<%= link_to('View', group_url(136, :only_path => false)) %>

您可以使用 only_path 來獲取 url output 和http://www.site.com/groups/1

如果沒有 only_path,你會得到 /groups/1

我怎樣才能得到rails中的路徑? 在link_to 之外? 如何獲得: http://www.site.com

我想創建 hash 深層鏈接 URL 的原因,所以我正在考慮這樣做:

<%= link_to('View', XXXXXX + "#" +group_url(136, :only_path => true)) %>

其中 XXXXXX 是 url、 http://www.site.com

這會給我我想要的東西:

http://www.site.com/#/groups/1

謝謝

在 controller 中, request.env['HTTP_HOST']將包含傳入請求的主機部分,因此您可以創建一個幫助方法來返回格式正確的“基本 url”,執行如下操作:

def site_root_url
  if request.env['HTTPS'] == 'on'
    proto = 'https'
  else
    proto = 'http'
  end
  "#{proto}://#{request.env['HTTP_HOST']}"
end

request.host返回主機(“www.your_site.com”)

request.protocol返回協議,例如http://https//

request.host_with_port返回帶有主機的端口(“www.your_site.com:3456”)

<%= link_to('View', request.host + "#" +group_url(136, :only_path => true)) %>
<%= link_to('View', request.protocol + request.host + "#" +group_url(136, :only_path => true)) %>
<%= link_to('View', request.protocol + request.host_with_port + "#" +group_url(136, :only_path => true)) %>

編輯

黑客:

host = group_url(136).gsub(/#{group_url(136, :only_path => true)}/, "")

或者

url  = group_url(136)
path = group_path(136)
host = url.gsub(/#{path}/, "")

暫無
暫無

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

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