2011-12-23 36 views
5

Trong trang Hiển thị người dùng của tôi, tôi muốn thêm một liên kết đến một trang web bên ngoài với một số giá trị được lưu trong bảng được truyền dưới dạng tham số.Làm cách nào để thêm thông số vào liên kết đến URL bên ngoài?

Tôi nhận được phần đầu tiên hoạt động đúng, thật đơn giản.

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

Nhưng tôi cũng muốn vượt qua một số paramaters được lưu trong cơ sở dữ liệu, như @user.email, @user.first_name vv

Vì vậy, về cơ bản là liên kết cuối cùng sẽ như thế nào:

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

Cách tốt nhất để làm điều này là gì?

Trả lời

1

Vì đường ray không biết trang web đó muốn tham số của nó như thế nào, tôi nghĩ bạn phải làm điều đó với chuỗi nối. Ít nhất, bạn có thể viết một helper để làm điều này cho bạn nhưng sẽ chỉ trở thành một chuỗi nối vào cuối.

+0

Tôi đã tìm ra cách tự làm, ít hơn 10 phút sau haha ​​.. Cảm ơn mọi người. – cdotfeli

+1

Không vấn đề gì, bạn đã sử dụng phương pháp nào? Viết bạn trả lời ở đây và đánh dấu nó là chính xác trong 2 ngày để nó có thể được sử dụng như một tài liệu tham khảo cho các nhà phát triển trong tương lai –

+2

Vâng tôi đã lên kế hoạch để làm điều đó :) Tôi chỉ cần đi với '<% = link_to" Outside Site ", ('http : //outsidesite.com? email = '+ @ user.email+'&firstname='[email protected])%> 'và thêm bất kỳ thứ gì tôi cần. Tôi không bỏ lỡ bất cứ điều gì tôi? – cdotfeli

4

Đây là một cách tiếp cận hợp lệ:

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

Chỉ cần chắc chắn rằng bạn thoát khỏi các biến bạn đang đưa vào URL:

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

Cảm ơn. Tôi tìm thấy một cách để làm điều đó mà không cần phải thoát khỏi các biến. – cdotfeli

0

này cung cấp cho một thử

# 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

Bạn có thể viết phương thức trợ giúp như url patern. Bạn có thể kiểm tra mã dưới đây:

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

Sau đó, bạn có thể gọi phương thức helper như:

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

Tôi hy vọng bạn tìm thấy điều này hữu ích.

Các vấn đề liên quan