【问题标题】:JQuery tabs with Rails: replacing tab content带有 Rails 的 JQuery 选项卡:替换选项卡内容
【发布时间】:2011-02-23 16:52:04
【问题描述】:

我有一个标签,里面有一个页面。一切都是好的。然后用户点击一个按钮。我希望这样做的输出显示在选项卡内。目前它使用户完全离开标签视图。

这是 .html.erb 文件中的选项卡 html:

<div id="tabs">
  <ul>

    <li><a href="urls">Manage URLs</a></li>
    ...other tabs...
  </ul>

  <div id="urls-tab">
    <p>
    </p>
  </div>
  ...other tabs...
</div>

我在表单上有一个新按钮:

<%= form_tag('urls/someaction_not_new', :method => :post, :id = "top-form") do %>
  ...content...
  <input type="button" id="New" value="New" onclick="someJavascript()">

<% end %>

最后是javascript:

$("#tabs").tabs();

function someJavascript() {
  document.location = "urls/new"
}

我知道 javascript 无法正常工作,但我没想到会这样。我需要知道的是如何构建该函数,以便将“urls/new”输出加载到选项卡,而不是重定向到没有选项卡的新视图。

任何帮助将不胜感激!

【问题讨论】:

    标签: jquery ruby-on-rails tabs


    【解决方案1】:

    使用这个:

    function someJavascript() {
      $('#tabs').load('urls/new')
    }
    

    它将在#tabs 中加载您的页面“urls/new”

    【讨论】:

    • 好东西...你知道一种方法可以让这种行为成为任何服务的默认行为吗?
    • #tab 是您将在其中加载页面 'urls/new' 并且您已输入的选项卡, 有onclick事件,函数在onclick事件上执行。
    【解决方案2】:

    之所以这样做,是因为它是一个 html 请求,它会刷新页面,导致您的选项卡消失。

    看起来您应该在提交表单时触发 AJAX 请求。如果这样做,您可以在视图中呈现 javascript 响应,并在选项卡内适当地呈现 html。

    【讨论】: