Rails在视图中切换案例

Max*_*xxx 26 ruby-on-rails view switch-statement

我想在我看来写一个开关盒:

<% @prods.each_with_index do |prod, index|%>
    <% case index %>
        <% when 0 %><%= image_tag("#{prod.img}", :id => "one") %>
        <% when 1 %><%=  image_tag("#{prod.img}", :id => "two") %>
        <% when 2 %><%= image_tag("#{prod.img}", :id => "three") %>
    <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我必须<% end %>在每行添加一个地方吗?有任何想法吗 ?谢谢 !

fl0*_*00r 61

你应该把你的第一个拉到when同一个街区case

<% @prods.each_with_index do |prod, index|%>
  <% case index 
     when 0 %><%= image_tag prod.img, :id => "one") %>
  <% when 1 %><%= image_tag prod.img, :id => "two") %>
  <% when 2 %><%= image_tag prod.img, :id => "three") %>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)


bea*_*nie 19

不要在你的观点中加入太多逻辑.

我会添加一个帮手

def humanize_number(number)
    humanized_numbers = {"0" => "zero", "1" => "one"}
    humanized_numbers[number.to_s]
end
Run Code Online (Sandbox Code Playgroud)

你可以从视图中调用它

<%= image_tag("#{prod.img}", :id => humanized_number(index)) %>
Run Code Online (Sandbox Code Playgroud)