ruby-on-rails – 我可以在Rails中使用link_to创建一个链接数组吗?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 我可以在Rails中使用link_to创建一个链接数组吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个列表,我想显示的url / title对的值. (更具体来说,每个对象都有自己的链接列表,一些有0个,一些有1个,一些有更多的链接.)我希望它们出现在一个逗号分隔的列表中.所以我在我的.erb文件中写道:
<%= links.map{|wl| link_to wl.title,wl.url}.join(',') %>

令我吃惊的是,这里显示了我想创建的链接HTML代码的逗号分隔列表;也就是说,它正在采取所有的尖括号和编码它们.为了确保在高阶函数中没有任何有趣的东西,我尝试了一个更为迫切的版本:

<% a = [] %>
<% links.each do |wl| %>
  <% a << link_to(wl.title,wl.url) %>
<% end %>
<%= a.join(',') %>

当然,同样的结果.但我不认为我是滥用link_to,因为如果我修改

<% links.each do |wl| %>
  <%= link_to(wl.title,wl.url) %>,<% end %>

那么它实际上创建了链接.这几乎正​​是我想要的,除了在最后一个之后有一个额外的逗号.在link_to的引擎盖下是否有一些魔法,这使得它根据其输出位置的不同而有所不同?有没有办法绕过这个魔法?连接语义将正是我想要的,我可以明确地知道如何滚动自己的(使用each_index,我猜),但它似乎是一个非常繁重和非Ruby的解决方案,一定是一个常见的问题.

解决方法

虽然使用html_safe的建议会得到您要执行的结果,但我建议您不要在您的视图中粘贴这样的循环.在轨道上有一个完美的方法来做你想要的:

在您的主视图文件中,您当前将循环更改为:

<%= render partial: 'links/link',collection: links,spacer_template: 'shared/comma' %>

然后创建一个部分链接/ _link.html.erb

<%= link_to link.title,link.url %>

然后创建一个部分共享/ _comma.html.erb

,

关于这种方法的好处是,如果您的链接内容实际上是安全的,并且如果您选择列出或创建样式,那么您不用担心,只需更改一个或两个模板就可以简单.例如,如果不是逗号,那么您决定要垂直使用< br>而不是在你的间隔模板中.

猜你在找的Ruby相关文章