引导选项卡中的Rails 4 ajax加载内容

发问者

我有与此帖子所述相同的问题

但是,我仍然很难理解该解决方案。

风景:

/ Nav tabs
%ul.nav.nav-tabs
  %li.active
    =link_to "Tab1", "#tab1", html_options = { "data-toggle" => "tab" }
  %li
    =link_to "Tab2", "#tab2", html_options = { "data-toggle" => "tab" }
  %li
    =link_to "Tab3", "#tab3", html_options = { "data-toggle" => "tab" }

/ Tab panes
.tab-content
  .tab-pane.active#tab1
    %p Fetch content
  .tab-pane.active#tab2
    %ul.nav.nav-pills
      %li.active= link_to 'Overview', "#overview", html_options = { "data-toggle" => "tab"}
      %li= link_to 'Details', "#details", html_options = { "data-toggle" => "tab"}
      .tab-content
        .tab-pane.active#overview
          %p Fetch overview
        .tab-pane.active#details
          %p Fetch details
  .tab-pane.active#tab3
    %p Fetch content

控制器:

def show
  @data_tab1 = User.admin
  @data_tab2 = User.member
  @data_tab3 = User.moderator
end

我不希望在每个请求中加载这三组数据。这样,当单击第二个选项卡并加载@ data_tab2时。

我发现此代码可能有用:

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  var target = $(e.target).attr("href") // activated tab
  if ($(target).is(':empty')) {
    $.ajax({
      type: "GET",
      url: "**WHAT SHOULD I PUT IN HERE**",
      error: function(data){
        alert("There was a problem");
      },
      success: function(data){
        $(target).html(data);
      }
  })
 }
})

所以,我想知道:

1.如何更改每个单击的选项卡的活动状态

2.如何ajax加载tab数据

Ajax调用发生错误。

[Error] TypeError: undefined is not a function (evaluating 'e.target.data("target")')
    (anonymous function) (1, line 3)
    dispatch (jquery.js, line 4642)
    handle (jquery.js, line 4310)
    trigger (jquery.js, line 4551)
    (anonymous function) (jquery.js, line 5261)
    each (jquery.js, line 384)
    each (jquery.js, line 137)
    trigger (jquery.js, line 5260)
    (anonymous function) (bootstrap.js, line 1048)
    next (bootstrap.js, line 1091)
    activate (bootstrap.js, line 1098)
    show (bootstrap.js, line 1043)
    (anonymous function) (bootstrap.js, line 1113)
    each (jquery.js, line 384)
    each (jquery.js, line 137)
    Plugin (bootstrap.js, line 1108)
    clickHandler (bootstrap.js, line 1137)
    dispatch (jquery.js, line 4642)
    handle (jquery.js, line 4310)

我想给每个选项卡窗格一个部分,如何在控制器中动态更改部分名称?例如

/ Tab panes
.tab-content
  .tab-pane.active#tab1
    = render "tab1"
  .tab-pane.active#tab2
    = render "tab2"
  .tab-pane.active#tab3
    = render "tab3"

我应该使用其他实例变量吗?

def show
  @data_tab = User.admin
  @data_tab = User.member if params[:tab] == "member"
  @data_tab = User.moderator if params[:tab] == "moderator"
end

或者

def show
  @data_tab1 = User.admin
  @data_tab2 = User.member if params[:tab] == "member"
  @data_tab3 = User.moderator if params[:tab] == "moderator"
end

更新:

它保持呈现与vid剪辑中所示相同的数据集。

http://tinypic.com/r/28k5302/8

请指教。

曼迪普
  1. 如何更改每个单击的选项卡的活动状态

如果您看一下bootstrap tabs markup,它会显示:

您可以通过简单地在元素上指定data-toggle =“ tab”或data-toggle =“ pill”来激活选项卡或药丸导航,而无需编写任何JavaScript

因此,您的标记需要像这样:

/ Nav tabs
%ul.nav.nav-tabs
  %li.active
    =link_to "Tab1", "#tab1", html_options = { "data-toggle" => "tab" }
  %li
    =link_to "Tab2", "#tab2", html_options = { "data-toggle" => "tab" }
  %li
    =link_to "Tab3", "#tab3", html_options = { "data-toggle" => "tab" }

/ Tab panes
.tab-content
  .tab-pane.active#tab1
    %p Fetch content
  .tab-pane#tab2
    %ul.nav.nav-pills
      %li.active
        = link_to 'Overview', "#overview", html_options = { "data-toggle" => "tab"}
      %li
        = link_to 'Details', "#details", html_options = { "data-toggle" => "tab"}
      .tab-content
        .tab-pane.active#overview
          %p Fetch overview
        .tab-pane#details
          %p Fetch details
  .tab-pane#tab3
    %p Fetch content

注意:您只需要在要显示的选项卡上应用活动班级。

  1. 如何ajax加载标签数据

一种。创建一个您希望您的ajax请求转到的定制路由,或者您可以仅使用show动作。

b。我们需要添加一些数据属性,以便我们知道正在单击哪个选项卡。然后,我们可以将其定位在后端。

/ Nav tabs
%ul.nav.nav-tabs
  %li.active
    =link_to "Tab1", "#tab1", data: {toggle: "tab", target: "admin", href: "#{your_show_action_path}
  %li
    =link_to "Tab2", "#tab2", data: {toggle: "tab", target: "member", href: "#{your_show_action_path}
  %li
    =link_to "Tab3", "#tab3", data: {toggle: "tab", target: "moderator", href: "#{your_show_action_path}
/ Tab panes
.tab-content
  .tab-pane.active#tab1
    %p // this will be activated by default so you can load default content here
  .tab-pane#tab2
    %ul.nav.nav-pills
      %li.active
        = link_to 'Overview', "#overview", html_options = { "data-toggle" => "tab"}
      %li
        = link_to 'Details', "#details", html_options = { "data-toggle" => "tab"}
      .tab-content
        .tab-pane.active#overview
          %p Fetch overview
        .tab-pane#details
          %p Fetch details
  .tab-pane#tab3
    %p Fetch content

C。使用JS触发您的Ajax请求

$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
  var target = $(this).data("target");
  var href = $(this).data("href");
  $.ajax({
    type: "GET",
    url: href,
    data: {tab: target},
    dataType: "script"
  });
})

d。现在,您可以根据ajax请求发送的选项卡变量来加载选项卡内容。

def show
  @data_tab = User.admin
  @data_tab = User.member if params[:tab] == "member"
  @data_tab = User.moderator if params[:tab] == "moderator"
end

#show.js.erb
$(".tab-pane.active").html("your content here");

我想给每个选项卡窗格一个部分,如何在控制器中动态更改部分名称?我应该使用其他实例变量吗?

如果内容相同,则可以使用相同的局部变量和相同的实例变量,但是如果内容不同,则可以检查params以获得目标变量的值,然后相应地在js.erb中呈现局部变量

更新:

1:如何动态更改.tab-pane.active,就像我将成员和主持人设置为空的partials那样,这样当我单击“ member”选项卡时,partial将充满ajax数据并向该窗格添加“ active”类?

您无需在此处添加活动类,因为如果您的应用中包含bootstrap js,那么它将在您单击的选项卡上自动设置活动类, bootstrap docs

2:js.erb如何响应不同的实例变量并呈现不同的部分?

当您单击选项卡时,我们将获得数据目标属性,并将其作为params发送到ajax请求中,然后在js.erb文件中,我们正在检查这些param值以呈现局部。

3.如何防止以前单击的选项卡发送ajax请求?

不确定您的意思是什么,但是先前单击的选项卡不会也不应发送ajax请求。如果您快速单击2个选项卡,则发送2个Ajax请求是正常的,因为最后它总是会显示活动选项卡。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

引导选项卡中的Rails 4 ajax加载内容

来自分类Dev

遍历Rails中的引导选项卡内容

来自分类Dev

Rails 4-如何显示选项卡内容而无需单击选项卡标签

来自分类Dev

FullCalendar无法加载到Boostrap 4选项卡中

来自分类Dev

Ajax 在 Bootstrap 选项卡中重新加载内容

来自分类Dev

Bootstrap选项卡ajax在页面加载时加载内容

来自分类Dev

阻止在引导程序3中显示选项卡内容?

来自分类Dev

阻止在引导程序3中显示选项卡内容?

来自分类Dev

如何使用引导程序 4.x 使用一个选项卡更改两个选项卡容器的内容?

来自分类Dev

单击选项卡内容内的链接后,在jQuery-UI-选项卡中动态加载ajax内容

来自分类Dev

引导多个导航选项卡内容

来自分类Dev

引导选项卡的内容下降

来自分类Dev

引导多个导航选项卡内容

来自分类Dev

Bootstrap选项卡-首先加载Ajax内容THEN开关选项卡

来自分类Dev

Ajax在Rails 4中重新加载div内容错误+放置远程位置:true

来自分类Dev

引导选项卡内容并排设置卡

来自分类Dev

使用引导程序 4 选项卡时将活动类存储在本地存储中

来自分类Dev

PHP Jquery选项卡:内容加载到一个选项卡的面板中

来自分类Dev

Bootstrap 4 选项卡和 ajax javascript 错误

来自分类Dev

动态选项卡中的动态内容(角度,UI引导程序)

来自分类Dev

角度引导程序选项卡-在页面加载中调用选择功能

来自分类Dev

引导导航选项卡不影响多个选项卡内容

来自分类Dev

单击每个选项卡时是否可以刷新引导程序选项卡的内容?

来自分类Dev

选项卡-单击选项卡之一(引导程序)后显示的内容

来自分类Dev

引导选项卡CSS阴影在选项卡内容底部而不是顶部

来自分类Dev

引导选项卡,如何设置页面加载时选择的选项卡?

来自分类Dev

引导选项卡,如何设置页面加载时选择的选项卡?

来自分类Dev

log4j2到电锯无法正常工作-电锯的“ Zeroconf”选项卡中未显示任何内容

来自分类Dev

使用bootstrap v4在laravel中重新加载后重定向到特定选项卡

Related 相关文章

  1. 1

    引导选项卡中的Rails 4 ajax加载内容

  2. 2

    遍历Rails中的引导选项卡内容

  3. 3

    Rails 4-如何显示选项卡内容而无需单击选项卡标签

  4. 4

    FullCalendar无法加载到Boostrap 4选项卡中

  5. 5

    Ajax 在 Bootstrap 选项卡中重新加载内容

  6. 6

    Bootstrap选项卡ajax在页面加载时加载内容

  7. 7

    阻止在引导程序3中显示选项卡内容?

  8. 8

    阻止在引导程序3中显示选项卡内容?

  9. 9

    如何使用引导程序 4.x 使用一个选项卡更改两个选项卡容器的内容?

  10. 10

    单击选项卡内容内的链接后,在jQuery-UI-选项卡中动态加载ajax内容

  11. 11

    引导多个导航选项卡内容

  12. 12

    引导选项卡的内容下降

  13. 13

    引导多个导航选项卡内容

  14. 14

    Bootstrap选项卡-首先加载Ajax内容THEN开关选项卡

  15. 15

    Ajax在Rails 4中重新加载div内容错误+放置远程位置:true

  16. 16

    引导选项卡内容并排设置卡

  17. 17

    使用引导程序 4 选项卡时将活动类存储在本地存储中

  18. 18

    PHP Jquery选项卡:内容加载到一个选项卡的面板中

  19. 19

    Bootstrap 4 选项卡和 ajax javascript 错误

  20. 20

    动态选项卡中的动态内容(角度,UI引导程序)

  21. 21

    角度引导程序选项卡-在页面加载中调用选择功能

  22. 22

    引导导航选项卡不影响多个选项卡内容

  23. 23

    单击每个选项卡时是否可以刷新引导程序选项卡的内容?

  24. 24

    选项卡-单击选项卡之一(引导程序)后显示的内容

  25. 25

    引导选项卡CSS阴影在选项卡内容底部而不是顶部

  26. 26

    引导选项卡,如何设置页面加载时选择的选项卡?

  27. 27

    引导选项卡,如何设置页面加载时选择的选项卡?

  28. 28

    log4j2到电锯无法正常工作-电锯的“ Zeroconf”选项卡中未显示任何内容

  29. 29

    使用bootstrap v4在laravel中重新加载后重定向到特定选项卡

热门标签

归档