如何将参数添加到link_to外部URL?

时间:2011-12-23 02:57:10

标签: ruby-on-rails

在我的“显示用户”页面中,我想添加一个指向外部网站的链接,其中一些值保存在作为参数传递的表中。

我让第一部分工作正常,这很简单。

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

但我也希望传递一些保存在数据库中的参数,例如@user.email@user.first_name等。

所以基本上最终的链接看起来像是:

http://outsidesite.com/create?email=user@email.com&firstname=userfirstname等等。

最好的方法是什么?

4 个答案:

答案 0 :(得分:5)

您可以编写辅助方法,例如url pattern。您可以查看以下代码:

  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")

我希望你觉得这很有用。

答案 1 :(得分:4)

这是一种有效的方法:

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

请确保将您放入网址的变量转义:

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

答案 2 :(得分:1)

因为rails并不知道网站是如何想要它的,所以我认为你必须使用字符串连接。至少,您可以编写一个帮助程序来为您执行此操作,但最终将成为字符串连接。

答案 3 :(得分: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) %>