2011-12-23 78 views
5

在我的「顯示用戶」頁面中,我想添加一個鏈接到外部網站,其中一些值保存在作爲參數傳遞的表中。如何將參數添加到link_to外部URL?

我得到了第一部分正確的工作,很簡單。

<%= link_to "Outside Site", "http://outsidesite.com/create" %> 

但我也想通過一些PARAMATERS被保存在數據庫中,如@user.email@user.first_name

所以基本上在最後的鏈接看起來像:

http://outsidesite.com/[email protected]&firstname=userfirstname等等等等。

這樣做的最好方法是什麼?

回答

1

由於rails不知道網站是如何得到它的paramteres,我認爲你必須用字符串連接來完成它。至少,你可以寫一個幫手來爲你做這件事,但最終只會成爲一個字符串連接。

+0

我想出瞭如何自己做,不到10分鐘後哈哈..無論如何。 – cdotfeli 2011-12-23 03:05:32

+1

沒問題,你用什麼方法?寫你在這裏回答,並在2天內將其標記爲正確,以便它可以用作未來開發者的參考 – 2011-12-23 03:06:09

+2

是的,我打算這樣做:)我剛剛用'<%= link_to「Outside Site」,('http ://outsidesite.com?email ='+ @ user.email+'&firstname='[email protected])%>'並添加任何我需要的。我不會錯過任何我? – cdotfeli 2011-12-23 04:01:55

4

這是一種有效的方法:

<% = link_to "Outside Site", 
"http://outsidesite.com/create?email=#{@user.email}" %> 

只要確保你逃避你把到URL中的變量:

require 'uri' 
escaped_email = URI.escape(@user.email) 
+0

謝謝。我找到了一種不用逃避變量的方法。 – cdotfeli 2011-12-23 04:09:36

0

試試這個

# routes.rb 
get 'create?:query' => 'users#create', :as => :create_users_with_query 

# models/user.rb 
class User < ActiveRecord::Base 
    def to_params 
    "email=#{self.email}&firstname=#{self.firstname}" 
    end 
end 

# view 
<%= link_to "Outside Site", create_users_with_query(@user) %> 
4

您可以編寫諸如url patern之類的幫助器方法。您可以檢查代碼波紋管:

def generate_url(url, params = {}) 
    uri = URI(url) 
    uri.query = params.to_query 
    uri.to_s 
    end 

之後,你可以調用輔助方法,如:

generate_url("YOUR-URL-ADDR-HERE", :param1 => "first", :param2 => "second") 

我希望你發現這很有用。