J'essaie d'ajouter un chemin à mon application. J'ai un code qui fonctionne comme je le voudrais, mais j'aimerais le regrouper différemment pour qu'il soit plus intuitif à lire. Voici le code:Spécification de l'ordre des ressources
get 'posts/search' => 'posts#search',
:as => :search_posts
put 'posts/search_result' => 'posts#search_result',
:as => :search_posts_result
resources :posts do
end
mais je voudrais faire quelque chose comme ceci:
resources :posts do
get 'posts/search' => 'posts#search',
:as => :search_posts
put 'posts/search_result' => 'posts#search_result',
:as => :search_posts_result
end
Il est une différence très petite, mais le faire la dernière façon définit fonctionne resources :posts
premier. Par conséquent, Rails tente de faire correspondre /posts/search
à /posts/:id
(pour l'affichage) et donne une erreur car il ne peut pas trouver un message avec l'ID 'recherche'. Y at-il un moyen que je peux dire à rails pour exécuter les définitions get et mettre avant d'exécuter resources :posts
?
Vous avez raison sur l'utilisation 'PUT messages # search_result'. J'ai réalisé après avoir écrit ceci que ça devrait être un "GET". Merci pour la réponse réfléchie. Votre réponse et votre dinatih ont tous deux fonctionné, mais je vous donne celui-ci pour la description supplémentaire. –
@Eric Hu: Merci pour l'acceptation. Colorie-moi stupide, mais un résultat de recherche pour/posts/search ne devrait-il pas être un message en soi, pas un type distinct? En d'autres termes, le lien pour chaque résultat de recherche ne devrait-il pas être un/post/id? – coreyward
Merci pour la réponse! Comme je l'ai prévu, 'posts # search_results' (j'ai ajouté un s dans mon code) est comme' posts # index', mais ne liste que les messages pertinents aux paramètres de recherche de l'utilisateur entrés dans 'posts # search'. Pour le moment, il utilise en fait la vue 'posts # index', mais je prévois de faire une vue séparée pour' posts # search_results' afin que cela puisse être fait avec AJAX. Cela a-t-il du sens? –