2012-07-07 2 views
1

각 행마다 확인란을 표시하는 방법을 알았습니다. 문제는 detele 동작을 사용하여 checked rows 매개 변수를 messages_controller에 전달하기 위해 form_tag 및 submit 태그를 작성하는 방법을 찾을 수 없다는 것입니다. 및 삭제 작업에 쓸 내용레일에서 여러 개의 체크 된 레코드를 삭제하는 방법은 무엇입니까?

제발 도와주세요!

def trash 
    conversation = Conversation.find_by_id(params[:id]) 
    if conversation 
    current_user.trash(conversation) 
    flash[:notice] = "Message sent to trash." 
    else 
    conversations = Conversation.find(params[:conversations]) 
    conversations.each { |c| current_user.trash(c) } 
    flash[:notice] = "Messages sent to trash." 
    end 
    redirect_to messages_path(box: params[:current_box]) 
end 

route.rb

Example::Application.routes.draw do 



root :to => "top#index" 
devise_for :users, :controllers => { :registrations => "registrations" } 

get 'girls', :to => 'girls#index', :as => :user_root 
match '/girls/comment' => 'girls#comment', :via => :post 
get "girls/show" 
resources :girls 
resources :home 

devise_for :users do get 'logout' => 'devise/sessions#destroy' end 

resources :girls do 
    collection do 
    get 'tag' 
    end 
end 


    resources :contacts 
    resources :user_profiles 

    match 'messages/new/:username', :to => 'messages#new' 



    get "messages/sent" 
    get "messages/trash" 
    get "messages/received" 
    get "messages/show" 
    get "messages/trash" 
    match '/messages/deliver' => 'messages#deliver', :via => :post 


end 

답변

3

귀하의 요구 사항에 맞게 아래 구문 수정 :

Model.where(:id => [1,2,3,4,5]).destroy_all 

또는

Model.where(id: params[:id]).destroy_all 
1

당신이 가진 모든이 할 (여기 https://github.com/frodefi/rails-messaging/blob/master/app/controllers/messaging/messages_controller.rb이에 따라) 내보기

<table> 
    <tr> 
    <th>delete</th> 
    <th>ID</th> 
    <th>Read</th> 
    <th>Date</th> 
    <th>Sender</th> 
    <th>Subject</th> 
    </tr> 


<% @messages.each do |m| %> 
    <tr> 
    <td><%= check_box_tag '', m.id, false, class: 'delete_multiple_checkbox', name: "conversations[]" %> 
    <td><%= m.last_message.id %></td> 
    <td><%= 'unread' if m.is_unread?(current_user) %></td> 
    <td><%= m.last_message.created_at %></td> 
    <td><%= m.last_sender.username %></td> 
    <td><%= m.subject %></td> 
</tr> 
<% end %> 
</table> 

이며, 컨트롤러는 다음과 같이해야한다 전체 메시지 렌더링 블록을 form_tag로 랩핑하고, 어디서든 li을 볼 수있는 곳에 submit_tag를 추가합니다. 케. 귀하의 컨트롤러가 빈 네임 스페이스 아래 MessagesController라고 가정하고 작업은 휴지통입니다. 컨트롤러가 메시징 네임 스페이스 아래에있는 경우 : controller => : 메시지를 controller => 'messaging/messages'로 변경할 수 있습니다.

<% form_tag :url => { :controller => :messages, :action => :trash}, :method => :delete do %> 
     <% @messages.each do |m| %> 
     <tr> 
      <td><%= check_box_tag '', m.id, false, class: 'delete_multiple_checkbox', name: "conversations[]" %> 
      <td><%= m.last_message.id %></td> 
      <td><%= 'unread' if m.is_unread?(current_user) %></td> 
      <td><%= m.last_message.created_at %></td> 
      <td><%= m.last_sender.username %></td> 
      <td><%= m.subject %></td> 
     </tr> 
     <% end %> 
     <%= submit_tag "Trash All Checked" %> 
    <% end %> 

은 또한 당신의 routes.rb는 HTTP가 지정된 경로에 대한 방법을 삭제 받아 가정. rake route | grep messages으로 확인하고 경로가 설정되어 있는지 확인할 수 있습니다. 당신이 그것을 추가해야합니다되지 않은 경우 :

resources :messages do 
    collection do 
     delete :trash 
    end 
end 
+0

덕분에, 난 그냥 복사 붙여 넣기. 하지만 이제는 이전에 사용 된 레코드가 표시되지 않습니다 .... ( – MKK

+0

메시지가 표시되지 않습니다. –

+0

실제로 레코드 행을 제외한 모든 것을 렌더링합니다. :( – MKK

관련 문제