Rails使用模态和局部变量进行部分渲染

时间:2013-09-21 03:59:58

标签: javascript ruby-on-rails modal-dialog ruby-on-rails-4

我试图在点击不是基于任何数据库对象的“组名”,而是基于从中派生的局部变量时,在弹出窗口(理想情况下是我必须弄清楚的模态)中呈现部分内容。 API。我看过这篇较老的帖子:Rendering partial in rails modal,但它根本不适合我。当我点击时,我只是被路由到root。我正在尝试通过在“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" %>

使用Javascript:

$('.groups_showme').click(function() {
  $('#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();
}

编辑:工作的最终代码

$('.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;
});

1 个答案:

答案 0 :(得分:2)

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

  1. click(function()应该有一个参数e
  2. e.preventDefault()应放在第一位。对于最后一个位置,等效值为return false
  3. [可选]更好地使用on代替click
  4. 所以,

    $('.groups_showme').on('click', function(e) {
      e.preventDefault();
      // others
    });