我正在努力使用复选框将多个项目发送到垃圾箱文件夹。我得到一个
undefined method `move_to_trash' for #<Array:0x007...etc...
move_to_trash
在单个对话中工作正常。
我在部分呈现的每个对话旁边都有一个复选框,还有一个按钮来删除所有选中的对话。
无论如何,我的对话控制器:
def trash_multiple
@convo = mailbox.conversations.find(params[:trash_id])
@convo.move_to_trash(current_user)
redirect_to mailbox_inbox_path
end
位于每个对话旁边的部分复选框:
<%= check_box_tag "trash_id[]", conversation.id %>
ID 是正确的。
形式:
<div class="message-cont">
<div class="col-md-8">
<%= form_tag trash_multiple_conversations_path, method: :post do %>
<%= submit_tag "Trash selected" %>
<div class="panel-body">
<% if is_conversation %>
<%= render 'conversations/form' %>
<% else %>
<div class="msg-cnter">
<%= render partial: 'conversations/conversation', collection: messages %>
</div>
<% end %>
<% end %>
</div>
</div>
</div>
还有我的路线:
resources :conversations do
member do
post :reply
post :trash
post :untrash
end
collection do
get :trashbin
post :empty_trash
post :trash_multiple
end
end
任何关于让它适用于数组的提示将不胜感激,谢谢。
溶液:
将控制器更改为:
def trash_multiple
params[:trash_id].each do |element|
@convo = mailbox.conversations.find(element)
@convo.move_to_trash(current_user)
end
redirect_to mailbox_inbox_path
end
如@wpp所述,已解决此问题。
move_to_trash在单个对话中工作正常。
我的猜测是你想在数组的每个元素上调用 move_to_trash
方法:
array.each do |element|
element.move_to_trash
end
或更短:
array.map(&:move_to_trash)
试试这个
@convo.each {|c| c.move_to_trash(current_user) }