2012-07-19 4 views
0

Je peux supprimer tous les messages cochés dans l'index sans aucun problème.
Mais en vue d'affichage, le lien généré montre le lien vers /messages/discard.3 ce 3 pourrait être ID.Comment configurer correctement les routes

Comment puis-je le faire fonctionner? il devrait être lié aux messages/défaussez/3

Mes fichiers sont comme ces

routes.rb

get "messages/received" 
    get "messages/sent" 
    get "messages/trash" 
    get 'messages/:id' => 'messages#show', :as => :show_messages 

    match 'messages/new/:username', :to => 'messages#new', :as => :new_messages 
    match 'messages/deliver' => 'messages#deliver', :via => :post 
    match 'messages/discard' => 'messages#discard', :via => :post, :as => :discard_messages 
    match 'messages/untrash' => 'messages#untrash', :via => :post 

vue 1 (index.html.erb)

<%= form_tag(:action=> discard) do %> 
    <% @messages.each do |m| %> 
     <tr> 
     <td><%= check_box_tag "checked_items[#{m.id}]",m.id %></td> 
     <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><%= link_to m.subject, show_messages_path(m) %></td> 
     </tr> 
    <% end %> 

vue 2 (show.html.erb)

<%= link_to 'Trash', discard_messages_path(@messages) %> 

messages_controller.rb

def discard 
     conversation = Conversation.find_all_by_id(params[:checked_items].keys) 
    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 :back 
    end 

Répondre

0

Vous pouvez modifier à:

match 'messages/discard/:id' => 'messages#discard', :via => :post, :as => :discard_messages 

Cependant, je pense que vous devriez faire est de changer tous les itinéraires à:

resource :messages do 
    member do 
    #code 
    end 

    collection do 
    #code 
    end 
end 

Il est plus facile à lire et à maintenir

+0

Merci! Je l'ai changé à votre première suggestion. mais il dit Erreur de routage Aucune route correspond {: action => "rejeter",: controller => "messages"} :( – MKK

Questions connexes