Ruby条件数组

时间:2014-01-26 15:38:27

标签: ruby-on-rails ruby arrays erb

在ruby中,有什么方法可以选择有条件地遍历哪个数组?

如果条件为真 - >如果不使用数组B,则使用数组1.

我尝试了以下但是没有用。

   <% if  @post.active ?  %>
        <% Post::A_OPTIONS.each do |option|  %>
    <%else %>
        <% Post::B_OPTIONS.each do |option| %>
    <%end%>
      <br><%= radio_button_tag 'option', option, @option == option %>
      <%= option.humanize %>
    <% end %>

3 个答案:

答案 0 :(得分:4)

您应该将业务逻辑放入模型中。比如

class Post
  def options
    active ? Post::A_OPTIONS : Post::B_OPTIONS
  end
end

然后在你看来,

<% @post.options.each do |option| %>
  <%= radio_button_tag 'option', option, @option == option %>
  <%= option.humanize %>
<% end %>

在这种情况下,您的视图与选项的生成方式隔离,选项逻辑视图逻辑都简单明了

答案 1 :(得分:1)

这个怎么样?

<% (@post.active ? Post::A_OPTIONS : Post::B_OPTIONS).each do |option|  %>
  <br><%= radio_button_tag 'option', option, @option == option %>
  <%= option.humanize %>
<% end %>

答案 2 :(得分:0)

如何在Post模型上定义一个只返回正确选项的方法? e.g。

class Post < ActiveRecord::Base
  A_OPTIONS = [...];
  B_OPTIONS = [...];

  # other stuff

  def options
    if active
      A_OPTIONS
    else
      B_OPTIONS
    end
  end
end

然后你的观点将变得简单:

<% @post.options.each do |option|  %>
  <br><%= radio_button_tag 'option', option, @option == option %>
  <%= option.humanize %>
<% end %>