Mex*_*xer 4 ajax tabs ruby-on-rails twitter-bootstrap
所以我有一个用户配置文件,其中包含一个标签导航:
<div id="proftab">
<ul class="nav nav-tabs">
<li class="active">
<%= link_to "About", about_users_path, :remote => true, :data => {:toggle=>"tab"} %>
</li>
<li><%= link_to "Pictures", pictures_users_path, :remote => true, :data => {:toggle=>"tab"} %></li>
</ul>
</div>
<div class="row">
<div id="profile" class="span9">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我设法让Ajax渲染某些部分内容.现在,当我单击选项卡时,部分加载到我的目标占位符div中.但我的问题是选项卡列表项不会更改其活动类,具体取决于呈现的部分.真的不知道如何解决这个问题.
我认为它与链接或ID有关.当我像引导程序文档中那样构建选项卡时(使用隐藏和显示的div)它可以很好地工作.但我认为它无论如何都无法正确处理部分问题.我希望有一个人可以帮助我!谢谢!
的routes.rb
get "users/about" => 'users#about', :as => :about_users
get "users/pictures" => 'users#pictures', :as => :pictures_users
Run Code Online (Sandbox Code Playgroud)
users_controller.rb
class UsersController < ApplicationController
before_filter :authenticate_user!
def index
@users = User.all
end
def show
@user = User.find(params[:id])
end
def about
respond_to do |format|
format.js
end
end
def pictures
respond_to do |format|
format.js
end
end
end
Run Code Online (Sandbox Code Playgroud)
意见/用户/ about.js.erb
$("#profile").html("<%= escape_javascript(render(:partial => 'about')) %>");
Run Code Online (Sandbox Code Playgroud)
意见/用户/ pictures.js.erb
$("#profile").html("<%= escape_javascript(render(:partial => 'pictures')) %>");
Run Code Online (Sandbox Code Playgroud)
意见/用户/ _about.html.erb
<div class="tab-pane active" id="#about">
about
</div>
Run Code Online (Sandbox Code Playgroud)
意见/用户/ _pictures.html.erb
<div class="tab-pane active" id="#pictures">
pictures
</div>
Run Code Online (Sandbox Code Playgroud)
tabs.js
$('#proftab a').click(function (e) {
e.preventDefault();
$(this).tab('show');
})
Run Code Online (Sandbox Code Playgroud)
实际上你根本不需要bootstrap javascript for tabs.我从链接中删除了数据切换,并将我的javascript更改为:
$('#proftab a').click(function (e) {
$('ul.nav-tabs li.active').removeClass('active')
$(this).parent('li').addClass('active')
})
Run Code Online (Sandbox Code Playgroud)
工作完美!