Ruby on rails 轨道复选框标记

Ruby on rails 轨道复选框标记,ruby-on-rails,checkbox,Ruby On Rails,Checkbox,我想基于复选框创建一个表单,如果“@clans”数组不是nil并且它包含给定复选框的“值”,我想选中它 我的第一次演讲是: <%= check_box_tag 'clans[]','Feniks', true if !@clans.nil? and @clans.include? 'Feniks' %> 但是当@clans为nil时,复选框将消失,就像它被禁用一样 我用这样的代码解决了这个问题: <% if !@clans.nil? and @clans.includ

我想基于复选框创建一个表单,如果“@clans”数组不是nil并且它包含给定复选框的“值”,我想选中它

我的第一次演讲是:

<%= check_box_tag 'clans[]','Feniks', true if !@clans.nil? and @clans.include? 'Feniks' %>

但是当@clans为nil时,复选框将消失,就像它被禁用一样

我用这样的代码解决了这个问题:

  <% if !@clans.nil? and @clans.include? 'Feniks' %>
    Feniks: <%= check_box_tag 'clans[]','Feniks', true %>
  <% else %>
    Feniks: <%= check_box_tag 'clans[]','Feniks' %>
  <% end %>

费尼克斯:
费尼克斯:
但它看起来太糟糕了,必须有更好的方法来写这篇文章:)


请告诉我如何处理:)

if
逻辑包装在括号内

<%= check_box_tag 'clans[]','Feniks', (true if !@clans.nil? and @clans.include? 'Feniks') %>
这就是为什么当条件为true时,
复选框标记
方法会被调用,否则不会被调用。您可以将整个
如果
部分编写为:

<%= check_box_tag 'clans[]','Feniks', @clans.try(:include?, 'Feniks') %>

我发誓我已经试过了:)我会接受的
<%= check_box_tag 'clans[]','Feniks', @clans.try(:include?, 'Feniks') %>