Rails:用按钮隐藏记录,找不到ID错误的记录
Posted
技术标签:
【中文标题】Rails:用按钮隐藏记录,找不到ID错误的记录【英文标题】:Rails: Hide record with button, can not find record with id error 【发布时间】:2017-01-18 00:10:33 【问题描述】:我正在实现一种方法来隐藏表中的记录,但不通过按钮从我的数据库中删除。我在设置为 false 的表中添加了一个列“revision_active”布尔属性。使用视图条件可以显示仅设置为 true 的记录。
我的按钮(通过复选框将属性设置为 true):
<%= form_tag update_multiple_homeworks_path(:revision_active => true), method: :put do %>
....
<td><%= check_box_tag "homework[id][]", homework.id, checked = false %></td>
....
<%= submit_tag "Add to Bucket", :remote => true, :class => 'smallMobileRight button text-left' %>
在我的路线中:
resources :homeworks do
collection do
put 'update_multiple'
end
end
在我的控制器中:
def update_multiple
if params[:homework][:id]
@homework_ids = params[:homework][:id]
@homework_ids.each do |id|
Homework.revision_active = true
end
else
redirect_to homeworks_homework_details_path
end
respond_to do |format|
flash[:notice] = "Added to your Bucket!"
format.html redirect_to homeworks_homework_details_path
format.json head :no_content
format.js render :layout => false
end
end
参数
...
"_method"=>"put",
"authenticity_token"=>"blah",
"homework"=>"id"=>["107"],
"commit"=>"Add to Bucket",
"revision_active"=>"true",
"id"=>"update_multiple"
点击按钮时出错:
Couldn't find Homework with 'id'=update_multiple
有什么想法吗?我没有捕捉到 ID 数组,控制器出错?谢谢。
【问题讨论】:
【参考方案1】:我不会给出确切的答案,因为这是一个非常具体的问题,似乎对其他人没有多大好处。我认为您最好阅读文档以了解如何做到这一点。因此,我将向您指出一些资源。
您的路线
看起来您将 update_multiple
作为 id 传递,而您的路由助手将 id 作为参数。
由于这是更新集合,因此您不应该对特定记录进行操作。
您可以运行rake routes
来了解构建路由后它需要什么参数。 (http://guides.rubyonrails.org/routing.html)
您的复选框
<%= check_box_tag "homework[id][]", homework.id, checked = false %>
应该如下。
<%= check_box_tag "homework_ids[]", homework.id, checked = false %>
参考这里:http://apidock.com/rails/ActionView/Helpers/FormTagHelper/check_box_tag
在您的控制器中
你想要的可能是这个params[:homework_ids]
参考这里:http://guides.rubyonrails.org/action_controller_overview.html#parameters
【讨论】:
以上是关于Rails:用按钮隐藏记录,找不到ID错误的记录的主要内容,如果未能解决你的问题,请参考以下文章
text 找不到ID为primary的连接池。带有rails 5的sqlite3错误