谁更改了" params [:tab]"?

时间:2015-05-12 00:26:18

标签: ruby-on-rails twitter-bootstrap ruby-on-rails-3.2

在一个名为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':''%>的魔法有关?

1 个答案:

答案 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设置为活动状态,并且可通过我提供的链接进行描述