在我的“显示用户”页面中,我想添加一个指向外部网站的链接,其中一些值保存在作为参数传递的表中。
我让第一部分工作正常,这很简单。
<%= link_to "Outside Site", "http://outsidesite.com/create" %>
但我也希望传递一些保存在数据库中的参数,例如@user.email
,@user.first_name
等。
所以基本上最终的链接看起来像是:
http://outsidesite.com/create?email=user@email.com&firstname=userfirstname等等。
最好的方法是什么?
答案 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) %>