2014-11-20 48 views
0

在Rails中,我有一个“通知”类,其中一个字段是“链接”。此类中包含的链接的格式如下:exchange_path(6),这是交换控制器中显示操作的路径。Rails在数据库中显示链接使用link_to

我现在正试图输出这个链接这样:

<%= link_to "View Exchange", notification.link %> 

此行是一个循环开始为这样的:

<% @notifications.each do |notification| %> 

当我点击这个链接,它需要我到本地主机:3000 /用户/ exchange_path(6)而不是本地主机:3000 /交流/ 6像我所期望的。 (环路产生故障链路为在本地主机:3000 /用户/ 2)

回答

0

你可以这样做:

<%= link_to("View Exchange", "/#{notification.link.gsub('(', '/').gsub(')', '').gsub('_path', 's')}") %> 

或建立模型中的一种方法,其格式为您:

def format_link 
    link.gsub('(', '/').gsub(')', '').gsub('_path', 's') 
end 

并调用在你的link_to:

link_to("View Exchanges", notification.format_link) 

这将只有当所有的环节都严格按照格式化工作在这个问题

+0

谢谢,但这需要我直接localhost:3000/exchange_path(8),而不是调用控制器动作 – Arw50452 2014-11-20 19:58:52

+0

没有看到格式化您首先包括,现在工作正确! – Arw50452 2014-11-20 20:06:13

+0

很酷。随时接受。 :) – 2014-11-20 20:06:39

1

这可能是可怕的例子...

<%= link_to "View Exchange", eval(notification.link) %> 

应该评估和使用路径的助手。但你需要100%肯定没有什么不好的东西放在链接字段..

+0

谢谢,这可能会有效,但由于您提出的安全问题,我采用了上述答案。 – Arw50452 2014-11-20 20:31:38

相关问题