javascript - 将 Rails 变量传递给 javascript 灯箱弹出窗口

标签 javascript ruby-on-rails magnific-popup

我需要将与某个单击图像相关的 Rails 变量传递到其灯箱容器中。

我将所有上传的媒体输出到我的 _content.html.erb 布局中,如下所示

<% @media_uploads.each do |media_upload| %>
<%= media_upload.title %>
<%= media_upload.user.username unless media_upload.user.nil? %>
<%= media_upload.description %>

当像这样单击任何图像时,我会从 application.js 初始化放大的弹出窗口

$('.box p a').magnificPopup({
  type:'image',
  image: {
    markup: '<div class="mfp-figure">'+'<div class="mfp-close"></div>'+
    '<div class="mfp-box-top">//username, title?</div>'+
    '<div class="mfp-img">//this is where the picture is rendered</div>'+
    '<div class="mfp-box-bottom">//description?</div>'+
    '</div>'+'</div>', 
  }
});

有什么想法如何将变量从 Rails 传递到放大标记吗?我希望在相应的弹出窗口内显示适当的用户、标题和描述(除其他外) - 在 mfp-box-top 和 mfp-box-bottom div 内。

感谢您提供任何提示或技巧!

最佳答案

您必须在客户端解决此问题。最简单的方法是将此信息另外呈现为链接或其他 html 元素上的“data-”属性,如下所示:

 <a href='nice.img' data-title='nice', data-user-name='chuck', data-descrption='lorem impsum' />

然后在神奇的初始化程序中以通用方式查询此信息。

    $('.box p a').magnificPopup({
    type:'image',
    image: {
      markup: ...
      '<div class="mfp-box-top">' + $(this).attr('data-title') + '</div>'
      ...
      }
    });

关于javascript - 将 Rails 变量传递给 javascript 灯箱弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25629211/

相关文章:

javascript - Leafletjs Map 是否适用于中国?

javascript - 删除字符串上特定的多个结尾字符

ruby-on-rails - Omniauth 登录而不刷新页面?

mysql - 如何连接1433端口访问mysql数据库?

javascript - 使用 Magnific Popup 与 fullPage.js 中的 'autoScrolling: false,' 选项发生冲突

javascript - 如果应用程序是子应用程序,`app.use(express.static` 似乎不起作用

javascript - 使用 javascript 显示隐藏的 HTML 元素

javascript - BackboneJS - 为什么双击触发事件?

ruby-on-rails - 向 application_controller 添加一个方法,以便它对所有 Controller 和 View 可见

javascript - 数据属性中的放大弹出设置类型