在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 %>
答案 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 %>