[英]Error while deleting multiple records in database ROR
The following is the code in which i want to delete multiple records but getting error... my view named um_org_data
in which the code from the html file name is index.html.erb
以下是我要删除多个记录但出错的代码...我的视图名为um_org_data
,其中html文件名中的代码为index.html.erb
<%= form_tag destroy_um_org_data_path, method: :delete, data: { confirm: 'Are you sure you want to delete all these?' } do %>
<table class="table table-hover table-condensed">
<tr>
<th></th>
<th>Organization Name</th>
<th>Organization Description</th>
<th>Office Address</th>
<th>Office Phone Number</th>
<th>Actions</th>
</tr>
<% @um_org_data.each do |um_org_data| %>
<tr>
<td><%= check_box_tag "deleted_ids[]", um_org_data.id %></td>
<td><%= um_org_data.org_name %></td>
<td><%= um_org_data.org_description%></td>
<td><%= um_org_data.offc_addr%></td>
<td><%= um_org_data.offc_ph%></td>
<td>
<%= link_to "<i class='icon-eye-open'></i>".html_safe, um_org_data,"data-original-title" => "View Details", "data-placement" => "bottom", :rel => "nofollow", :class => 'bg-color-none' %>
<%= link_to "<i class= 'icon-edit'></i>".html_safe, edit_um_org_datum_path(um_org_data), "data-original-title" => "Edit", "data-placement" => "bottom", :rel => "nofollow", :class => 'bg-color-none'%>
<%= link_to "<i class= 'icon-trash'></i>".html_safe, um_org_data, method: :delete, data: { confirm: 'Are you sure?' }, "data-original-title" => "Delete", "data-placement" => "bottom", :rel => "nofollow", :class => 'bg-color-none' %>
</td>
</tr>
<%end%>
</table>
<%= button_tag(type: "submit", class: "btn") do %>
Delete Selected <i class="icon-trash"></i>
<% end %>
<% end %>
and for this my controller name um_org_data_controller.rb
has the following method against this action. 为此,我的控制器名称um_org_data_controller.rb
具有以下针对此操作的方法。
def destroy
@um_org_datum = UmOrgDatum.find(params[:id])
@um_org_datum.destroy
respond_to do |format|
format.html { redirect_to um_org_data_url }
format.json { head :no_content }
end
end
i am facing error in the very first line of the view name index.html.erb
我在视图名称index.html.erb
第一行中index.html.erb
the following is the detail of error that i found. 以下是我发现的错误的详细信息。
NameError in Um_org_data#index
undefined local variable or method `destroy_um_org_data_path' for #<#<Class:0x00000004582a10>:0x007fa9e42f4e38>
<%= form_tag destroy_um_org_data_path, method: :delete, data: { confirm: 'Are you sure you want to delete all these?' } do %>
<table class="table table-hover table-condensed">
<tr>
<th></th>
where as delete below in the view code is working fine...... Thanks in Advance. 在下面的视图代码中删除的地方工作正常......在此先感谢。
now after changing in my code..... 现在更改我的代码后.....
<%= form_tag url: destroy_selected_um_org_data_path, method: :delete, data: { confirm: 'Are you sure you want to delete all these?' } do %>
<table class="table table-hover table-condensed">
<tr>
<th></th>
<th>Organization Name</th>
<th>Organization Description</th>
<th>Office Address</th>
<th>Office Phone Number</th>
<th>Actions</th>
</tr>
<% @um_org_data.each do |um_org_data| %>
<tr>
<td><%= check_box_tag "um_org_data_ids[]", um_org_data.id %></td>
<td><%= um_org_data.org_name %></td>
<td><%= um_org_data.org_description%></td>
<td><%= um_org_data.offc_addr%></td>
<td><%= um_org_data.offc_ph%></td>
<td>
<%= link_to "<i class='icon-eye-open'></i>".html_safe, um_org_data,"data-original-title" => "View Details", "data-placement" => "bottom", :rel => "nofollow", :class => 'bg-color-none' %>
<%= link_to "<i class= 'icon-edit'></i>".html_safe, edit_um_org_datum_path(um_org_data), "data-original-title" => "Edit", "data-placement" => "bottom", :rel => "nofollow", :class => 'bg-color-none'%>
<%= link_to "<i class= 'icon-trash'></i>".html_safe, um_org_data, method: :delete, data: { confirm: 'Are you sure?' }, "data-original-title" => "Delete", "data-placement" => "bottom", :rel => "nofollow", :class => 'bg-color-none' %>
</td>
</tr>
<%end%>
</table>
<%= button_tag(type: "submit", class: "btn") do %>
Delete Selected <i class="icon-trash"></i>
<% end %>
<% end %>
the controller code is following: 控制器代码如下:
def destroy_selected
@um_org_data = UmOrgData.find(params[:um_org_data_ids])
@um_org_data.each { |o| o.destroy }
respond_to do |format|
format.html { redirect_to um_org_data_url }
format.json { head :no_content }
end
end
and the error is following: 错误如下:
NameError in Um_org_data#index
undefined local variable or method `destroy_selected_um_org_data_path' for #<#<Class:0x00000004663bf0>:0x0000000466d3a8>
<%= form_tag url: destroy_selected_um_org_data_path, method: :delete, data: { confirm: 'Are you sure you want to delete all these?' } do %>
<table class="table table-hover table-condensed">
<tr>
<th></th>
The helper method for deletion that gets generated by a resource route is basically the same helper method as for the show
action only with method: :delete
, hence there is no destroy_*
helper method. 由资源路由生成的删除帮助程序方法与仅使用method: :delete
的show
动作的帮助程序方法基本相同,因此没有destroy_*
帮助程序方法。
Ie, you would use: link_to um_org_data_path(um_org_data), method: :delete
即,您将使用: link_to um_org_data_path(um_org_data), method: :delete
But what you're trying to achieve doesn't work that way. 但是,您试图实现的目标却无法正常工作。 Since the destroy
method only works on a single object (it expects an ID), not a collection of objects. 由于destroy
方法仅适用于单个对象(它需要一个ID),而不适用于对象的集合。 So I guess you would need something like this: 因此,我想您将需要以下内容:
# routes.rb
resources :um_org_data do
collection do
delete :destroy_selected
end
end
# um_org_data_controller.rb
class UmOrgDataController < AC::Base
def destroy_selected
@um_org_data = UmOrgData.find(params[:um_org_data_ids])
@um_org_data.each { |o| o.destroy }
# ...
end
end
# index.html.erb
<%= form_tag url: destroy_selected_um_org_data_path, method: :delete do %>
<% @um_org_data.each do |um_org_data| %>
<tr>
<td><%= check_box_tag "um_org_data_ids[]", um_org_data.id %></td>
# ...
</tr>
<% end %>
<% end %>
Your path in the following link_to
is not correct: 您在以下link_to
路径不正确:
<%= link_to "<i class= 'icon-trash'></i>".html_safe, um_org_data, method: :delete, data: { confirm: 'Are you sure?' }, "data-original-title" => "Delete", "data-placement" => "bottom", :rel => "nofollow", :class => 'bg-color-none' %>
Try to replace: 尝试更换:
um_org_data
by 通过
um_org_data_path(um_org_data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.