Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
Ruby on rails 从表中删除条目,而不从数据库中删除_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 从表中删除条目,而不从数据库中删除

Ruby on rails 从表中删除条目,而不从数据库中删除,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我构建了一个小型web应用程序,其中主视图显示一个表,管理员可以使用以下选项从数据库中删除行: *.destroy 但是,我希望保留数据库中的所有条目,但仍然希望用户能够从表中删除行,并且不确定如何执行此操作。我在考虑使用两个不同的数据库表,但想看看是否有更简单的方法 以下是我的主要观点: <h1>Student List</h1> <table class ="Tables"> <tr> <th>First Name</th

我构建了一个小型web应用程序,其中主视图显示一个表,管理员可以使用以下选项从数据库中删除行:

*.destroy
但是,我希望保留数据库中的所有条目,但仍然希望用户能够从表中删除行,并且不确定如何执行此操作。我在考虑使用两个不同的数据库表,但想看看是否有更简单的方法

以下是我的主要观点:

<h1>Student List</h1>

<table class ="Tables">
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Date Submit</th>
<th>Floor Preference</th>
<th></th>
</tr>

<% @students.each do |student|%>
<tr>
<td><%= student.f_name %></td>
<td><%= student.l_name %></td>
<td><%= student.created_at %></td>
<td><%= student.floor_pref %></td>
<td><%= button_to 'Remove', student, method: :delete, data: { confirm: 'Are you sure?' } %></td>
</tr>
<% end %>
</table>
<br />
<%= link_to 'New Student', new_student_path %>
学生名单
名字
姓
提交日期
楼层偏好


您可以通过在同一个表中使用布尔值创建一个额外的列来轻松实现这一点。 所以额外的列名可以是活动的。 删除行的isActive为0,其余行的isActive为1。
在获取数据时,只需在isActive=1的位置加上额外的检查,就可以通过在同一个表中创建一个带有布尔值的额外列轻松地完成这项工作。
rails g migration AddActiveToStudents active:boolean
所以额外的列名可以是活动的。 删除行的isActive为0,其余行的isActive为1。 在获取数据时,只需在isActive=1的位置进行额外检查

rails g migration AddActiveToStudents active:boolean
然后在视图中,您可以在他们单击“删除”按钮时更改值

然后在
后面打勾。每个do | student |

<% if student.active %>
..........display..............
<% end %>

显示。。。。。。。。。。。。。。
然后在视图中,您可以在他们单击“删除”按钮时更改值

然后在
后面打勾。每个do | student |

<% if student.active %>
..........display..............
<% end %>

显示。。。。。。。。。。。。。。

这个解决方案需要更多的人力,但对我来说很有效。我的步骤与此类似,但我将提供更多细节,因为我是编程新手,所以我将假设还有其他人也是新手:

假设: -您使用的是单个模型、视图和控制器(例如,模型为Foo) -您可以通过单击启动控制器操作(“销毁”)的按钮从数据库中删除记录 -如果你有关联,从数据库中销毁记录对你的应用程序来说是个问题

  • 为名为is_active的新列创建了迁移,w/datatype:boolean。验证rails是否正确创建了迁移。如果没有,请手动调整迁移文件。确保您绑定了exec-rake-db:migrate(在对数据库进行任何更改之后)。重新启动服务器

  • 通过将is_active变量设置为false,编辑控制器中的销毁操作。布尔值计算为“真”或“假”。对于我们来说,“false”将表示一个“已删除”行(虽然它不会在数据库中被删除,只是从视图中隐藏。例如@foo.is_active=false。请确保使用“=”运算符来分配值。在视图中,您将使用不同的运算符(=)。请确保在任何编辑之后进行保存。例如@foo.save。此外,请注释掉任何销毁代码。例如#@foo.destroy

    2a.我还在创建操作中将is_active值设置为“true”。这可能没有必要,但到目前为止对我有效。如果您进行了此调整,请记住保存。例如@foo.is_active=true,@foo.save

  • 在结果将显示的视图中,添加一个条件语句。我在表格中循环并绘制结果。我的if语句在我的do循环之后。如果它的计算结果为“false”,我将显示一行文本。否则,如果它的计算结果为“true”,我将显示我的数据。(通常,在后面的行中,我有:Do循环,iF语句为'False',Else语句为'True',数据为End标记)

  • 因此,在“if”语句中,我告诉rails,当您循环通过时,如果您看到一行foo.is_active为“false”,则显示此文本。否则(else)显示“else”和“end”之间的数据。请注意视图中的运算符与控制器之间的差异。在视图中,我们检查等式(=),而不是为(=)赋值

    确保你调用的变量与你在控制器的销毁操作中设置的变量相匹配。它们必须一致,否则你会收到错误消息。在我发现之前,这给了我几个小时的问题。因此,如果你在控制器中设置@foo,那么你只能在视图中调用@foo


    最后,我使用的视图是我的索引,但我也在我的显示视图中使用了一个条件语句,这样我的用户就可以打开或关闭is_admin。使用一个简单的表单,我添加了is_admin变量作为布尔值,它在我的显示表单上显示为一个复选框。选中时,该行将显示为true。未选中时,该行显示为fals这是一个劳动密集型的解决方案,但对我来说很有效。我的步骤类似,但我会提供更多细节,因为我是编程新手,所以我会假设还有其他人也是新手:

    假设: -您使用的是单个模型、视图和控制器(例如,模型为Foo) -您可以通过单击启动控制器操作(“销毁”)的按钮从数据库中删除记录 -如果你有关联,从数据库中销毁记录对你的应用程序来说是个问题

  • 为名为is_active,w/datatype:boolean的新列创建了迁移。请验证rails是否正确创建了迁移。如果没有,请手动调整迁移文件。确保在对数据库进行任何更改后绑定exec rake db:migrate。重新启动服务器

  • 通过将is_active变量设置为false来编辑控制器中的销毁操作。布尔值的计算结果为“true”或“false”。对于我们来说,“false”将表示一个“已删除”行(虽然它不会在数据库中删除,只是从视图中隐藏。例如@foo.is_active=false。请确保使用“=”运算符,用于指定值。在视图中,您将使用不同的运算符(=)。请确保在任何编辑后进行保存。例如@foo.save。此外,注释掉所有销毁代码。例如#@foo.destroy

    2a.我还在创建操作中将is_active值设置为“true”。这可能没有必要,但到目前为止对我有效。如果您进行了此调整,请记住保存。例如@foo.is_active=true,@foo.save

  • 在您的结果