谁更改了 "params[:tab]" 的值?
who changed the value of "params[:tab]"?
在一个名为 x.html.erb
的 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'
,反之亦然,或者说谁改变了[=16的值=] 当我切换一个选项卡 Excursion
或 Workshop
相应的 html:
<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':''%>
来看,这一定和某个rails
的魔法有关吧?
params[:tab]创建后不会改变。这是 rails 存根的一部分,它在页面加载时执行其逻辑以协助创建标记。我们可以保证在当前代码中定义了 params[:tab] 散列的唯一方法是 at,
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 都会将其设置为活动状态,并且可以通过我提供的 link
进行描述
在一个名为 x.html.erb
的 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'
,反之亦然,或者说谁改变了[=16的值=] 当我切换一个选项卡 Excursion
或 Workshop
相应的 html:
<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':''%>
来看,这一定和某个rails
的魔法有关吧?
params[:tab]创建后不会改变。这是 rails 存根的一部分,它在页面加载时执行其逻辑以协助创建标记。我们可以保证在当前代码中定义了 params[:tab] 散列的唯一方法是 at,
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 都会将其设置为活动状态,并且可以通过我提供的 link
进行描述