Rails 4 – 如何将活动选项卡指定为真实条件的第一个实例

我有一个名为包的模型,它具有许多属性(包资源)。 我想在一组选项卡式字段中显示包的内容 – 每个选定的资源都有一个。

如果项目中没有涉及资源,则视图中不会显示该选项卡。

我已设置选项卡,因此只有在选择资源为true时才会显示它们。 这样做如下:

上面的位问题是在第一个选项卡内指定了活动选项卡。 如果第一个选项卡不是必需的资源,则可以包含接下来的两个选项卡(如果需要),但是第一个选项卡为true将不具有true。

如何将“活动选项卡”状态动态分配到第一个真实条件,以便为活动选项卡显示选项卡内容。

  
"wow fadeInLeft img-responsive", :alt=>"123") %>

首先,您不必使用== true显式地与true进行比较。 笔直走。

 <% if @project.package.has_background_ip %> 

其次,为什么不在帮助器中实现一个非常简单的检查来定义哪个选项卡应该是活动的,然后使用该索引。 帮手:

 # will return 1 if has_background_ip is true # if not, will return 2 if has_data is true # if both are false, will return 3 if has_material is true # return -1 if all are false def firstActiveTab return case when @project.package.has_background_ip 1 when @project.package.has_data 2 when @project.package.has_material 3 else -1 end end 

然后在视图(erb)中,如果firstActiveTab方法返回1(这意味着has_background_ip为true),代码将仅为第一个选项卡添加活动类。

 
  • ... first tab content for background_ip...
  • ... second tab content for has_data...
  • 第一个选项卡代码使用== 1,第二个选项卡使用== 2,等等。