Ruby on rails-如何将变量插入到数组中的字符串中?

时间:2017-12-03 15:05:51

标签: ruby-on-rails

我想用以下方法重复:for。

例如,

<li class="<%= is_active?([y17s_index_path,y17s_gun_path]) %>"><a href='<%= y17s_index_path%>'>2017</a></li>
<li class="<%= is_active?([y16s_index_path,y16s_gun_path]) %>"><a href='<%= y16s_index_path%>'>2016</a></li>
<li class="<%= is_active?([y15s_index_path,y15s_gun_path]) %>"><a href='<%= y15s_index_path%>'>2015</a></li>
<li class="<%= is_active?([y14s_index_path,y14s_gun_path]) %>"><a href='<%= y14s_index_path%>'>2014</a></li>
.
.
.

在这种情况下如何编写重复声明? 我试过了#{}但它不起作用。

我想只改变17,16,15 ......这些数字。

2 个答案:

答案 0 :(得分:2)

您可以使用send - 方法对每个调用使用一些轻量元编程:

<% [1..17].each do |i| %>
  <li class="<%= is_active?([send("y#{i}s_index_path"), send("y#{i}s_gun_path")]) %>"><a href='<%= send("y#{i}s_index_path") %>'>20<%= "%02d" % i %></a></li>
<% end %>

应以与以前相同的方法输出2001年至2017年。 您可以在此处查看有关send方法的文档:https://apidock.com/ruby/Object/send

答案 1 :(得分:1)

我相信send()会在这里做你需要的,正如弗雷德里克斯庞建议的那样。我只想添加&#34;动态访问&#34;是你所描述的常用术语。如果您想要搜索更多信息,那么拥有该概念的名称将有很大帮助,即尝试搜索&#34;动态访问Ruby方法&#34;。