Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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 页面刷新后显示为div的对话框_Javascript_Jquery_Ruby On Rails_Ajax_Ruby On Rails 3 - Fatal编程技术网

Javascript 页面刷新后显示为div的对话框

Javascript 页面刷新后显示为div的对话框,javascript,jquery,ruby-on-rails,ajax,ruby-on-rails-3,Javascript,Jquery,Ruby On Rails,Ajax,Ruby On Rails 3,我正在尝试创建一个单页CRUD。 现在,我在show函数中遇到了一些错误 该应用程序的示例可在此处找到: 它似乎工作正常。 创建后,如果页面未刷新,show函数可以正常工作 但是,如果刷新,该对话框将停止作为对话框工作,并仅显示为div 您可以通过创建一个用户并单击show函数来尝试。然后尝试刷新页面,相同的div只会显示在页面上,而不是作为对话框显示 可在此处找到来源: 相关代码: 该对话框是显示窗体 <tr id = "<%= dom_id user%>">

我正在尝试创建一个单页CRUD。 现在,我在show函数中遇到了一些错误

该应用程序的示例可在此处找到:

它似乎工作正常。 创建后,如果页面未刷新,show函数可以正常工作

但是,如果刷新,该对话框将停止作为对话框工作,并仅显示为div

您可以通过创建一个用户并单击show函数来尝试。然后尝试刷新页面,相同的div只会显示在页面上,而不是作为对话框显示

可在此处找到来源:

相关代码:

该对话框是显示窗体

  <tr id = "<%= dom_id user%>">
<td><%= user.user_name %></td>
<td><%= user.email %></td>
<td><%= user.password %></td>
<td><%= user.account_type %></td>
<td><%= link_to 'Show', user, :remote=>true%></td>
<td><%= link_to 'Edit', edit_user_path(user), :remote => true %></td>
<td><%= link_to 'Destroy', user, :remote => true, method: :delete, data: { confirm: 'Are you sure?' } %>
</td> 
<div id = "show-form" title="User Information">
  <p>
  <b>User name:</b>
    <%= user.user_name %>
  </p>

  <p>
    <b>Email:</b>
    <%= user.email %>
  </p>

  <p>
  <b>Password:</b>
    <%= user.password %>
  </p>

  <p>
    <b>Account type:</b>
    <%= user.account_type %>
 </p>
</div>
</tr>

任何关于它为什么会发生的想法都将不胜感激。

这与你的js关系不大,而与你的php关系不大

从代码中删除此项:

      <div id = "show-form" title="User Information">
        <p>
        <b>User name:</b>
        <%= user.user_name %>
        </p>

        <p>
        <b>Email:</b>
        <%= user.email %>
        </p>

        <p>
        <b>Password:</b>
        <%= user.password %>
        </p>

        <p>
        <b>Account type:</b>
        <%= user.account_type %>
        </p>
        </div>

这并不完美。。。lol无论如何,但至少你可以满怀希望地使用它。

似乎你有多个元素
#show form
当你创建页面时,你是用内容生成表单div还是实时填充空表单?是的,我有多个元素#show form,这会是问题吗?嗯,我不知道你所说的填空表单是什么意思。我认为问题在于show表单一直显示第一个元素。让我调查一下。非常感谢你的回复。我想隐藏div,但我尝试了另一种方法,没有为每个用户提供div。
      <div id = "show-form" title="User Information">
        <p>
        <b>User name:</b>
        <%= user.user_name %>
        </p>

        <p>
        <b>Email:</b>
        <%= user.email %>
        </p>

        <p>
        <b>Password:</b>
        <%= user.password %>
        </p>

        <p>
        <b>Account type:</b>
        <%= user.account_type %>
        </p>
        </div>
        <tr id = "<%= dom_id user%>">
            <td><%= user.user_name %></td>
            <td><%= user.email %></td>
            <td><%= user.password %></td>
            <td><%= user.account_type %></td>
            <td class="click_me" data-id="<%= dom_id user%>"><%= link_to 'Show', user, :remote=>true%></td>
            <td><%= link_to 'Edit', edit_user_path(user), :remote => true %></td>
            <td><%= link_to 'Destroy', user, :remote => true, method: :delete, data: { confirm: 'Are you sure?' } %>
            </td> 
        </tr>
        <tr  style="display: none;" class="hidden_<%= dom_id user%>">
        <td colspan="8">

        <div class = "show-form" title="User Information">
        <p>
        <b>User name:</b>
        <%= user.user_name %>
        </p>

        <p>
        <b>Email:</b>
        <%= user.email %>
        </p>

        <p>
        <b>Password:</b>
        <%= user.password %>
        </p>

        <p>
        <b>Account type:</b>
        <%= user.account_type %>
        </p>
        </div>
</td>
</tr>
$('td').on('click','.click_me', function(){
      var id = $(this).data('id');
      $('.hidden_'+id).slideToggle();
});