我想通过组合我的数据库中的记录来生成超链接。这是一个例子:
token_id value is 123456789
user_name value is Peter
brand_id value is 8
token_id + brand_id + user_name应该组合成一个像unique_id这样的新数组,这样你就可以得到这个结果:
Unique_id=123456789-8-peter
然后我想将结果放在可点击的URL中,例如: example.com/?campaign=XYZ?Unique_id=<%= unique_id%&gt;
你有什么想法吗?
答案 0 :(得分:1)
很难知道你在这里想要实现的目标,但我会猜测。
首先,这不是一个有效的网址:网址必须只有一个?
,因为这会在路径结束并且参数开始时告诉它。 (如果你想要?在param值中,你需要对其进行url编码,但我不会认为这是你的想法)。有效网址的示例是
http://example.com?campaign=XYZ&unique_id=123456789-8-peter
有&#34; /&#34;作为路径然后两个参数(campaign和unique_id)
请注意,我已使用&#34; unique_id&#34; (downcased)作为第二个param名称:按惯例,param名称都是downcased。
制作链接:
<% unique_id = [token_id, user_name, brand_id].join("-") %>
<%= link_to home_path(:campaign => "XYZ", :unique_id => unique_id) %>
这假设您已经定义了一个名为&#34; home&#34;它指向&#34; /&#34;。这将需要指向一些控制器和默认操作,例如您的家庭控制器和&#34;索引&#34;行动。它还假设变量token_id
,user_name
和brand_id
已在某处定义。
或者,您可能需要这样的网址,它会加载广告系列:
http://example.com/campaigns/XYZ?unique_id=123456789-8-peter
注意路径现在是&#34; / campaigns / XYZ&#34;而不只是&#34; /&#34;。按照惯例,这会调用您的CampaignsController&#34; show&#34;行动,传递&#34; XYZ&#34;作为params [:id]。你还可以在params[:unique_id]
获得123456789-8-peter。
要使用link_to帮助程序在rails中生成此链接,它可能类似于
<% unique_id = [token_id, user_name, brand_id].join("-") %>
<%= link_to campaign_path(@campaign, :unique_id => unique_id) %>
这需要定义@campaign。
答案 1 :(得分:1)
您可以添加到型号:
def to_param
[token_id, brand_id, user_name.parameterize].join("-")
end
您可以在此处找到更多信息:Friendly URLs