如何使用 link_to 添加引导模式,以便链接内容以模式打开?

Posted

技术标签:

【中文标题】如何使用 link_to 添加引导模式,以便链接内容以模式打开?【英文标题】:How to add bootstrap modal with link_to so the link content open in modal ? 【发布时间】:2013-02-15 15:28:06 【问题描述】:

我正在尝试在 rails 链接上使用引导模式 http://twitter.github.com/bootstrap/javascript.html#modals 在模式中打开该链接

<%= link_to page_path, target: '_blank' %>

但不知何故它不起作用。标准切换代码是 -

<a data-toggle="modal" href="#myModal" class="btn">Launch demo modal</a>

但我不确定如何将它应用到 rails 中的 link_to,有什么帮助吗?

谢谢

【问题讨论】:

我通过按以下顺序向我的 application.js 添加要求来完成这项工作://= 需要 popper,//= 需要 turbolinks,//= 需要引导程序您可以在此处查看示例:@ 987654322@ 【参考方案1】:

如果你想在隐藏状态的页面上预加载模式,下面是代码

<%= link_to "Open modal", "#my-modal", :class => "btn", "data-toggle" => "modal" %>
<div class="modal hide fade" id="my-modal" title="My modal">
  <div class="modal-header">
    <button aria-hidden="true" class="close" data-dismiss="modal" type="button">×</button>
    <h3 id="myModalLabel">Modal header</h3>
  </div>
  <div class="modal-body">
    Modal Body
  </div>
  <div class="modal-footer">
    <button aria-hidden="true" class="btn" data-dismiss="modal">Close</button>
  </div>
</div>

如果你想通过 ajax 加载模式,那么你可以这样做

<%= link_to "Open modal", new_post_path, :class => "btn", :remote => true, "data-toggle" => "modal", "data-target" => "my-modal" %>
<div class="modal hide fade" id="my-modal" title="My modal">
  <div class="modal-header">
    <button aria-hidden="true" class="close" data-dismiss="modal" type="button">×</button>
    <h3 id="myModalLabel">New Post</h3>
  </div>
  <div class="modal-body a-unique-class">
    New Post Body
  </div>
  <div class="modal-footer">
    <button aria-hidden="true" class="btn" data-dismiss="modal">Close</button>
  </div>
</div>

posts/new.js.erb 中你会包含

$(".a-unique-class").html('<%= j render "posts/_form" %>')

确保每个模态体都有一个唯一的 id 或类。

假设您想使用模态表单创建一个新帖子,控制器代码和_form.html.erb 就位

【讨论】:

感谢 benchwarmer,虽然没用。这是我的代码 "btn", "data-toggle" => "modal" %> 但它仍然在新标签页中打开页面 您想在同一页面上预加载模态框还是想通过 ajax 加载模态框的正文? 我知道这篇文章很旧,但只是在代码中进行了一个小的 sintax 更正: $(".a-unique-class").html(' ') 不应该是:&lt;%= link_to "Open modal", new_post_path, :class =&gt; "btn", :remote =&gt; true, "data-toggle" =&gt; "modal", "data-target" =&gt; "#my-modal" %&gt; 这样数据目标是唯一的 id 吗?但是,此解决方案似乎不适用于 bootstrap3。您应该在此处的示例中使用 html 代码:getbootstrap.com/javascript/#modals posts/new.js.erb 中应该是$(".a-unique-class").html('&lt;%= j render "form" %&gt;')。然后一切都会工作:)。【参考方案2】:

在 Rails 中添加data 属性有一个更漂亮的方法。您可以执行类似的操作来获得相同的结果。

<%= link_to 'Click Here', "#", data: toggle: "modal", target: "#modal" %>

【讨论】:

加载动作视图而不是整个页面的最佳方式是什么?此示例似乎加载了应用程序视图和 link_to 页面。如果我只想要 edit.html.erb 视图而不需要其他内容怎么办?谢谢! 我最近做了类似的事情,我的索引操作视图有几条记录。每条记录都有一个带有标签的关联模式。每个选项卡都呈现了大量数据。我没有用一堆可能永远不会在该视图上看到的数据污染浏览器,而是按需加载它。查看 Railscast 源代码,了解 Ryan 是如何做到的。您可以根据自己的喜好对其进行调整。将原本 500KB 的占用空间缩减到最初的 15KB。 Railscasts。 :) 这不是一个特定的插曲,而是实际的 Railscasts 站点。 github.com/ryanb/railscasts【参考方案3】:

上面的 benchwarmer 回答中有语法错误。

试试这个:

$(".a-unique-class").html('<%= j render "posts/form" %>')

【讨论】:

这应该是理想的评论。这也只是已接受答案的一部分,因此您不应发布此类答案。您可以选择编辑答案(但这一切只有在获得一些声誉后才有可能)。阅读How to Answer

以上是关于如何使用 link_to 添加引导模式,以便链接内容以模式打开?的主要内容,如果未能解决你的问题,请参考以下文章

如何检查引导模式是不是打开,以便我可以使用 jquery 验证?

如何在引导模式内的kendo-ui网格输入上设置输入焦点

在引导程序模式之间切换

如何在模式内单击按钮时使用 jQuery 或 javascript 获取引导模式的数据值?

在铁路应用程序的 link_to 标记中添加工具提示

在 Rails 应用程序中单击 link_to 标记后如何使用 JS 刷新浏览器