在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上)
答案 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)
仅当所有链接的格式与问题
中的示例完全相同时,此方法才有效