在一个名为erb
的{{1}}文件中,我对下面的小代码段感到困惑:
x.html.erb
我发现我无法弄清 <% params[:tab] |= "Excursion" %>
<% availableModels.each do |modelName| %>
<% if modelName == "Excursion" %>
<li class="<%= params[:tab]=='excursions' ? 'active':''%>">
<a id="excursions_tab" href="#tabExcursions" data-toggle="tab"> Excursions
</a>
</li>
<% elsif modelName == "Workshop" %>
<li class="<%= params[:tab]=='workshops' ? 'active':''%>">
<a id="workshops_tab" href="#tabWorkshops" data-toggle="tab">Workshop
</a>
</li>
<% end %>
如何更改,例如从params[:tab]
到params[:tab] = 'excursions'
,反之亦然,或者说谁更改params[:tab] = 'workshops'
的值当我切换一个标签params[:tab]
或Excursion
相应的html:
Workshop
或
<li class="active">
<div id="tab_excursions"> ...</div>
</li>
<li class>
<div id="tab_resources"> ... </div>
</li>
为了找到答案,我尝试将<li class>
<div id="tab_excursions"> ...</div>
</li>
<li class="active">
<div id="tab_resources"> ... </div>
</li>
更改为params[:tab]
,并发现它也运行良好。从params[:tabx]
开始,这必须与某个<%= params[:tab]=='excursions' ? 'active':''%>
的魔法有关?
答案 0 :(得分:2)
params [:tab]在创建后不会改变。这是rails存根的一部分,它在页面加载时执行其逻辑以帮助创建标记。我们可以保证使用当前代码定义params [:tab]哈希的唯一方法是,
params[:tab] |= "Excursion"
| =如果尚未设置,则将params [:tab]指定为“Excursion”。使用我当前的视图,params [:tab]将始终等于“Excursion”。如果“excursion”或“workshop”在页面加载时显示为活动状态,则此哈希值将比此代码段更早设置。
您在元素中拥有的是data-toggle属性,该属性将同一父节点下的这两个项目分组(我相信)。 Bootstrap中有一个Javascript函数,然后监听你对这两个元素的点击,然后相应地在两者之间切换。
简而言之,这是一个Bootstrap,JS功能。看看这个:http://getbootstrap.com/2.3.2/javascript.html#tabs,寻找可切换标签
-
确定最初设置为活动的选项卡基于参数[:tab]值。之后,您点击的任何一个标签都将被bootstraps JS和CSS设置为活动状态,并且可通过我提供的链接进行描述