2011-12-23 19 views
5

Na stronie Mój ekran użytkownika chcę dodać łącze do zewnętrznej witryny internetowej z pewnymi wartościami zapisanymi w tabeli przekazanej jako parametry.Jak dodać parametry do link_to zewnętrznego URL?

Pierwsza część działa dobrze, to proste.

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

Ale chcę przekazać pewne paramaters które są zapisane w bazie danych, jak @user.email, @user.first_name itp

Więc w zasadzie ostatnie ogniwo będzie wyglądać następująco:

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

Jaki byłby najlepszy sposób na zrobienie tego?

Odpowiedz

1

Ponieważ szyny nie wiedzą, w jaki sposób strona internetowa chce, aby były to elementy drukarskie, myślę, że trzeba to zrobić z łączeniem ciągów. Przynajmniej możesz napisać pomocnika, który zrobi to za Ciebie, ale ostatecznie stanie się końcem konkatenacji.

+0

Wymyśliłem, jak to zrobić sam, mniej niż 10 minut później haha ​​.. Dzięki i tak. – cdotfeli

+1

Nie ma problemu, z jakiej metody korzystałeś? Napisz tutaj odpowiedź i oznacz ją jako poprawną w ciągu 2 dni, aby mogła być używana jako odniesienie dla przyszłych programistów. –

+2

Tak, planowałem to zrobić :) Po prostu poszedłem z '<% = link_to" Outside Site ", ('http : //outsidesite.com? email = '+ @ user.email+'&firstname='[email protected])%> 'i dodawanie czegokolwiek, czego potrzebuję. Niczego mi nie brakuje? – cdotfeli

4

Jest to ważne podejście:

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

Tylko upewnij się uciec zmienne jesteś wprowadzenie do URL:

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

Dzięki. Znalazłem sposób na zrobienie tego bez konieczności ucieczki od zmiennych. – cdotfeli

0

spróbuj tego

# 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

Możesz napisać metodę pomocnika, taką jak url patern. Można sprawdzić ryk kodu:

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

Po tym, można wywołać metodę pomocnika jak:

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

Mam nadzieję, że to przydatne.

Powiązane problemy