Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击时不呈现模式窗体_Javascript_Ruby On Rails_Ajax_Modal Dialog - Fatal编程技术网

Javascript 单击时不呈现模式窗体

Javascript 单击时不呈现模式窗体,javascript,ruby-on-rails,ajax,modal-dialog,Javascript,Ruby On Rails,Ajax,Modal Dialog,目标 我目前正试图通过一个模式创建一个新的商店 问题 我遇到了一个问题,当我单击按钮时,包含表单的模式没有显示出来~到达了新的.js.erb文件,因为我能够呈现一条flash消息(而不是表单)~ 另一个问题是我目前使用的是而不是。当我使用后者时,我会收到一条错误消息:nil:NilClass的未定义方法“model\u name” 更新实施Chandra的解决方案后(参见下面的答案),当我单击按钮时,我的标签在浏览器中亮起,因此,我还附加了我的视图/layouts/application.ht

目标

我目前正试图通过一个模式创建一个新的商店

问题

  • 我遇到了一个问题,当我单击按钮时,包含表单的模式没有显示出来~到达了新的.js.erb文件,因为我能够呈现一条flash消息(而不是表单)~
  • 另一个问题是我目前使用的是
    而不是
    。当我使用后者时,我会收到一条错误消息:
    nil:NilClass的未定义方法“model\u name”
  • 更新实施Chandra的解决方案后(参见下面的答案),当我单击按钮时,我的标签在浏览器中亮起,因此,我还附加了我的视图/layouts/application.html.erb文件
代码

视图/存储/index.html.erb

<%= render "partials/show_panel_stores_overview"%>
views/layouts.html.erb

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>TODO</title>
    <%= csrf_meta_tags %>
    <%= action_cable_meta_tag %>
    <%= stylesheet_link_tag 'application', media: 'all' %>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

    <%= stylesheet_pack_tag 'application', media: 'all' %> <!-- Uncomment if you import CSS in app/javascript/packs/application.js -->
  </head>
  <body>
    <%= yield %>
    <%= render 'shared/flashes' %>

    <%= javascript_include_tag 'application' %>
    <%= javascript_pack_tag 'application' %>

  </body>
</html>

待办事项

上述代码似乎是正确的

现在需要做一个修复

视图/商店/new.js.erb

var form = $("<%= j(render 'form') %>");
var wrapper = $('<div>').attr('id', 'new-store-form').append(form);
$('body').append(wrapper);
var form = $('<%= j(render 'form') %>');
var form=$('');
替换为

var form = $("<%= j(render 'form') %>");
var form=$(“”);
下面的链接是呈现片段的示例代码,Ajax


谢谢你,钱德拉。我试图实现您的解决方案,但链接似乎仍然不起作用。但是,我的浏览器中的标记变亮了(progress!;),这可能表明存在问题。我将用标题标签更新我的问题。更新,表单呈现在页面底部,而不是假定的div中。您的解决方案有效。非常感谢你!
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>TODO</title>
    <%= csrf_meta_tags %>
    <%= action_cable_meta_tag %>
    <%= stylesheet_link_tag 'application', media: 'all' %>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

    <%= stylesheet_pack_tag 'application', media: 'all' %> <!-- Uncomment if you import CSS in app/javascript/packs/application.js -->
  </head>
  <body>
    <%= yield %>
    <%= render 'shared/flashes' %>

    <%= javascript_include_tag 'application' %>
    <%= javascript_pack_tag 'application' %>

  </body>
</html>
var form = $('<%= j(render 'form') %>');
var form = $("<%= j(render 'form') %>");