rails check_box_tag 消失

rails check_box_tag disapear

我想制作一个基于 check_boxes 的表单,如果“@clans”数组不为 nil 并且它包含给定复选框的 'value',我希望对其进行检查。

我的第一个 atemnpt 是:

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

但是当@clans 为 nil 时,check_box 消失,就像它被禁用一样。

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

  <% 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') %>

在您的代码中,if 用作修饰符。喜欢print 10 if x.present?。在此示例中,如果 x 不是 blank,则会调用此方法 print(10),否则不会。同样的类比也适用于您的情况。在 erb 标签内,您的代码被解释为:

<%= check_box_tag('clans[]','Feniks', true) if <condition> %>

这就是为什么当 condition 为真时,check_box_tag 方法被调用,否则不会被调用。您可以将整个 if 部分写为:

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