Javascript Rails使用模态和局部变量呈现局部

Javascript Rails使用模态和局部变量呈现局部,javascript,ruby-on-rails,modal-dialog,ruby-on-rails-4,Javascript,Ruby On Rails,Modal Dialog,Ruby On Rails 4,我试图在点击一个“组名”时在弹出窗口中呈现一个部分(理想情况下是一个我必须弄清楚的模式),该组名不是基于任何数据库对象,而是基于从API派生的局部变量。我看过这篇老文章:,但它根本不适合我。当我点击时,我只是被路由到根。我目前正试图通过在“render partial”上使用display:none和在单击“group name”时使用.show()函数来实现这一点 我是Rails新手,在学习Javascript方面非常努力,所以我不知道出了什么问题 以下是观点: <div id="gro

我试图在点击一个“组名”时在弹出窗口中呈现一个部分(理想情况下是一个我必须弄清楚的模式),该组名不是基于任何数据库对象,而是基于从API派生的局部变量。我看过这篇老文章:,但它根本不适合我。当我点击时,我只是被路由到根。我目前正试图通过在“render partial”上使用display:none和在单击“group name”时使用.show()函数来实现这一点

我是Rails新手,在学习Javascript方面非常努力,所以我不知道出了什么问题

以下是观点:

<div id="groups_show" style="display:none">
  <%= render partial: 'groups/group_full', :locals => {group: group} %>
</div>
<%= link_to group.name, root_url, class: "groups_showme" %>
编辑:最终有效的代码

$('.groups_showme').on('click', function(e) {
 e.preventDefault();
 $('#groups_show').show();
 win = new Window({title: "Share This", width:200, height:150, destroyOnClose: true, recenterAuto:false});
 win.setContent('#groups_show',true,true);
 win.show();
 return false;
});

JS代码中与此行为相关的两个错误:

  • click(function()
    应该有一个参数
    e
  • e.preventDefault()
    应放在第一位。对于最后一个位置,等效值为
    return false
  • [可选]最好在上使用
    ,而不是单击
  • 所以


    非常感谢。我正在标记为正确。尽管出于某种原因,渲染仍然出现在页面中,而不是作为弹出窗口出现。我不明白为什么。@MatthewMelone,代码现在似乎按照您的上一个版本工作?顺便说一句,停止链接只需要一种方法,preventDefault或
    return false
    啊,谢谢。如果我理解的话没错,整个win.setContent都来自prototype,我正在使用jQuery。所以现在我正在尝试为jQuery进行修改,结果是一团糟。
    $('.groups\u showme')。on('click',function(e){e.preventDefault();$('.groups\u show')。show();var htmlString=$(this.html();var dialog\u form=$('Loading')。dialog({autoOpen:false,width:520,modal:true,open:function(){return$(this).text(htmlString);},close:function(){..
    $('.groups_showme').on('click', function(e) {
     e.preventDefault();
     $('#groups_show').show();
     win = new Window({title: "Share This", width:200, height:150, destroyOnClose: true, recenterAuto:false});
     win.setContent('#groups_show',true,true);
     win.show();
     return false;
    });
    
    $('.groups_showme').on('click', function(e) {
      e.preventDefault();
      // others
    });