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错误

rails中的管理功能:错误:找不到具有'id'=的用户

eclipse使用struts2找不到action方法或找不到action的错误记录

Rails 找不到我的部分。缺少部分错误

在 Rails 中找不到关联问题

InvalidArgumentException:找不到带有 [Edit] 的正文、名称或 ID 属性的链接