我想用以下方法重复: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 ......这些数字。
答案 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;。