2009-11-30 6 views
0

J'ai un contrôleur de messages déclaré comme ressource dans mes routes.Aide au repos des rails standard

Je veux être en mesure d'avoir une vue de liste des messages reçus et une vue différente des messages envoyés.

Mais je ne veux pas briser le modèle de repos ... Qu'est-ce que vous recommandez?

Répondre

4

dans config/routes.rb:

map.resources :messages, :collection => { :sent => :get, :received => :get } 

Ensuite, dans votre messages_controller.rb:

def received 
    @messages = Message.to(current_user) 
end 

def sent 
    @messages = Message.from(current_user) 
end 

Dans votre message.rb définissent ces deux méthodes de portée nommées.

Ou comme Tony Fontenot a souligné:

def received 
    @messages = current_user.messages.to 
end 

def sent 
    @messages = current_user.messages.from 
end 
+0

Ne serait-il pas mieux de faire '@messages = current_user.messages.to' et' @messages = current_user.messages.from' –

+0

Ouais, vous avez raison. –

0

Keep it simple

/messages?view=sent

Dans votre méthode index



def index 
    @messages = case params[:view] 
    when 'sent' 
     Messages.sent 
    when 'received' 
     Messages.received 
    else 
     Messages.all 
    end 
end 

Voyez comment les poignées plug-in inherited_resources portée.

+0

Envoyé par qui? Reçu par qui? Pas une réponse complète imo. L'Interlocuteur lui a également demandé de se conformer aux pratiques RESTful. Ce n'est pas le cas. Le modèle va aussi probablement s'appeler "Message". –

+0

Puis NachoF devra ajuster l'itinéraire pour indiquer l'objet de la demande. '/ Client/73/messages? View = send' et de remplacer les messages. [Tout | envoyé | reçu] par un chercheur approprié. peut-être: 'client.messages.sent' Mais dans la question NachoF n'a donné aucune information concernant les associations de messages. –

+0

Et puis il utiliserait les params pour appeler envoyer sur l'association de messages? Que se passe-t-il si j'ai envoyé ces paramètres en tant que "delete_all"? –