当我使用active_link_to
时,我想让pagination
正常工作。我有3个nav-tabs
并且它们在选中时都可以正常工作,但是,当我点击我的分页按钮查看更多记录时,我当前的nav-tab会丢失它的活动状态(样式)。我需要采取哪些步骤来解决此问题?
如果有人不介意,还有一个小问题。我正在使用log-in
屏幕让我进入主要布局。当我登录时,nav-tabs
都不是active
。我该如何渲染?如果我单击其中一个它显示活动但我希望第一个选项卡默认显示为活动状态。我再次使用active_link_to
。
谢谢。
TW
以下是我使用代码更新的帖子:
在我的Gemfile中我有
gem kaminari
gem active_link_to
在我的projects_controller.rb
@projects = Kaminari.paginate_array(@projects).page(params[:page]).per(10)
在我的index.html.erb
在我的页面末尾
</table>
</div>
<%= paginate @projects %>
在我的projects_helper.rb
def active_link_to(text, link)
content_tag(:li, :class => request.fullpath == link ? 'active' :nil) do
link_to text, link
end
end
在我的布局application.html.erb
<ul class="nav nav-tabs">
<li><%= active_link_to("Active Projects", projects_path) %></li>
....
....
</ul>
答案 0 :(得分:0)
问题是您尝试将link
完全与fullpath
匹配,而您的fullpath
有时会包含一个查询字符串,如果您拒绝该字符串将会破坏fullpath == link
还要在link
中包含查询字符串。
一种可能的解决方案是匹配fullpath的子字符串,如下所示:
def active_link_to(text, link)
content_tag(:li, :class => request.fullpath.starts_with?(link) ? 'active' :nil) do
link_to text, link
end
end
甚至使用Ruby String的[]
方法询问字符串中是否存在子字符串:
def active_link_to(text, link)
content_tag(:li, :class => request.fullpath[link].present? ? 'active' :nil) do
link_to text, link
end
end
您还可以尝试使用提供所需方法的Gem:https://github.com/comfy/active_link_to
它使用更全面的路径匹配方法。