在我看来,我有各种各样的部分,当渲染时有一些内容的引导崩溃。
<div class="col-md-12">
<%= render 'contact_phones', f: f %>
<%= render 'contact_emails', f: f %>
<%= render 'contact_websites', f: f %>
<%= render 'contact_addresses', f: f %>
<%= render 'contact_gym_contacts', f: f %>
<%= render 'contact_notes', f: f %>
</div>
每个部分都有与此类似的内容
<% if params[:phones].blank? %>
<%= link_to "#{url_for(params.merge({phones: 1, anchor: 'phones_collapse'}))}" do %>
<%= t('activerecord.models.phone.other').capitalize %>
<i class="fa fa-caret-down"></i>
<% end %>
<% else %>
<a data-toggle="collapse" href="#phones_collapse" aria-controls="phones_collapse"><%= t('activerecord.models.phone.other').capitalize %>
<i class="fa fa-caret-up"></i>
</a>
<div id="phones_collapse" class="collapse in" >
<%= render(layout: 'resourceable/application/resourceable_association', locals: {f: f, resource_association: Contact.resource_association(:phones)}) do |builder| %>
<% if builder.object.persisted? %><p><%= link_to I18n.t('call_with_my_extension'), call_phone_url(builder.object), :remote => 'true' %></p><% end %>
<% end %>
</div>
<% end %>
渲染一个部分,然后折叠后,如果我渲染另一个部分(点击链接),第一个再次打开。在第一次渲染之后,如果我打开另一个,它们会保持关闭状态。问题是只有当我第一次渲染时,任何已经打开的东西都会再次打开,即使它已经折叠了。
渲染部分会添加到URL中,我想每次点击链接时都会发送URL,打开以前的折叠,就像这样
contacts=1&phones=1&websites=1#gym_contacts_collapse
如果我能找到一种方法来检查部分是否已经渲染(在测试中我可以检查内容,但是如何在视图中获取它?)。然后我可以尝试操纵类中的崩溃和崩溃。我尝试使用window.location和window.location.replace操作URL,但没有运气。
My idea:
When I click on the link:
if this partial hasn't been rendered yet
if other collapsible are closed,
they stay closed.
if open,
they stay open.
对不起,如果问题是重复或复杂的,请提前感谢。也许这比我制作它更简单