Rails使用link_to在数据库中显示链接

时间:2014-11-20 19:53:30

标签: ruby-on-rails

在Rails中,我有一个“通知”类,其中一个字段是“链接”。此类中包含的链接格式如下: exchange_path(6),其中这是交换控制器中show动作的路径。

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

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

这一行是一个循环,从这开始:

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

当我点击此链接时,我需要 localhost:3000 / users / exchange_path(6)而不是 localhost:3000 / exchange / 6 ,就像我期望的那样。 (生成故障链路的循环在localhost:3000 / users / 2上)

2 个答案:

答案 0 :(得分:1)

这可能会吓人......

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

应评估并使用路径助手。但你需要100%确定链接字段中没有任何不良内容。

答案 1 :(得分: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)

仅当所有链接的格式与问题

中的示例完全相同时,此方法才有效