我正在构建一个应用程序,我通过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)
我尝试了很多方法,但我得到错误或此链接
答案 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)