是否有更优雅的方式来编写此代码,可能是通过定义数组[[1, "test1"], [2, "test2"], …]
?
<%- if c.current_state == 1 %>
Test1
<% elsif c.current_state == 2 %>
Test2
<% elsif c.current_state == 3 %>
Test3
<% elsif c.current_state == 4 %>
Test4
<% elsif c.current_state == 5 %>
Test5
<% elsif c.current_state == 6 %>
Test6
<% end %>
答案 0 :(得分:1)
在您的视图中,您可以使用
完成相同的操作Test<%= c.current_state %>
所以如果没有更多细节,我无法给你进一步的建议。但是你应该阅读Enumerable:
使用map
1.upto(6).map {|v| "test#{v}" }
会给你
["test1", "test2", "test3", "test4", "test5", "test6"]
使用map.with_index
1.upto(6).map.with_index {|v| [v, "test#{v}"] }
会为您提供所需的数组
[[1, "test1"], [2, "test2"], [3, "test3"], [4, "test4"], [5, "test5"], [6, "test6"]]
使用inject
1.upto(6).inject({}) {|h,k| h[k] = "test#{k}"; h }
会给你
{1=>"test1", 2=>"test2", 3=>"test3", 4=>"test4", 5=>"test5", 6=>"test6"}