2011-12-23 20 views
5

Kullanıcıyı Göster sayfasında, parametre olarak iletilen tabloya kaydedilmiş bazı değerler içeren bir dış web sitesine bağlantı eklemek istiyorum.Bir link_to harici URL'ye parametreler nasıl eklenir?

İlk kısım doğru çalışıyor, bu kadar basit.

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

Ama aynı zamanda @user.email, @user.first_name gibi, veritabanına kaydedilir bazı parametrelerinin geçmek istiyorum vb

Yani temelde nihai bağlantı bakacağız gibi:

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

Bunu yapmanın en iyi yolu ne olurdu?

cevap

1

Raylar, web sitesinin paramterleri nasıl istediğini bilmediğinden, sanırım dizgiyi birleştirmeyle yapmanız gerekir. En azından, sizin için bunu yapmak için bir yardımcı yazabilir, ancak sonunda bir dize birleştirme haline gelecektir.

+0

Kendimi nasıl yapacağımı anladım, 10 dakikadan kısa bir süre sonra haha ​​.. Neyse sağol. – cdotfeli

+1

Sorun değil, hangi yöntemi kullandınız? Size cevap yazınız ve 2 gün içinde doğru olarak işaretleyiniz, böylece geleceğin geliştiricileri için referans olarak kullanılabilir –

+2

Evet Bunu yapmayı planlıyorum :) '<% = link_to "Site Dışında" ile gittim, (' http : //outsidesite.com? email = '+ @ user.email+'&firstname='[email protected])%> 've ihtiyacım olan her şeyi ekliyorum. Ben hiçbir şey eksik değilim değil mi? – cdotfeli

4

Bu, geçerli bir yaklaşımdır: Bu

# 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) %> 
+0

Teşekkürler. Değişkenlerden kaçmak zorunda kalmadan bunu yapmanın bir yolunu buldum. – cdotfeli

0

ver:

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

Sadece URL'ye koyarak konum değişkenleri kaçış emin olun URL paterni gibi yardım yöntemini yazabilirsiniz. Ben bu yararlı bulacağınızı umuyorum

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

: sizin gibi yardımcı yöntemini çağırabilir, Bundan sonra

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

: Kodun feryat kontrol edebilirsiniz.

4

deneyin

require 'uri' 
escaped_email = URI.escape(@user.email) 
İlgili konular