使用rails中的url参数设置动态链接路径

时间:2014-12-18 06:10:33

标签: ruby-on-rails dynamic hyperlink link-to url-parameters

我正在构建一个应用程序,我通过url参数动态设置链接。我无法弄清楚如何使link_to同时使用动态链接和其他url参数。

 TemplateController
   def next
     @template = Template.find(params[:t])
   end 

下一个视图

 <%= link_to "#{@template.firstpage_link}(:t => @template.id, :prt => 1)" do %><%end%>

这就是它给我的东西:

 http://localhost:3000/role/step2_path(:t%20=%3E%20@template.id,%20:prt%20=%3E%201)

我尝试了很多方法,但我得到错误或此链接

2 个答案:

答案 0 :(得分:1)

你似乎要拍摄的是

<%= link_to public_send(@template.firstpage_link, :t => @template.id, :prt => 1) do %>

public_send允许您通过将其名称作为符号或字符串传递来调用公共方法。

然而,正如@Typpex建议的那样,使用Rails路由器可能有更优雅的方法来实现这一目标。如果不出意外,您可以在帮助器中使用类似的东西清理视图:

def template_path(template)
  public_send(template.firstpage_link, :t => template.id, :prt => 1)
end

然后从你的观点中调用它。

答案 1 :(得分:0)

如果您查看link_to API

,我认为您没有正确使用link_to

您将看到第一个参数是您想要显示的内容,第二个参数是rails路径。您应该在定义rails路径(或纯URL)时传递参数,例如

link_to "display text", "#{@template.firstpage_link}?t=#{@template.id}&prt=1"

如果您可以使用像

这样的铁路路线会更好
template_path(@template, prt: 1)