2012-01-30 3 views
0

Je développe un projet avec rails 3.1.3 et kaminari 0.13.0. J'ai deux modèles Article et Commentaire. L'article a beaucoup de commentaires. Mes contrôleurs sont ArticlesController qui fait essentiellement tout sauf pour créer des commentaires. Ceci est géré par CommentsController. À mon avis pour 'articles # show' j'ai un formulaire pour créer de nouveaux commentaires. Je veux que ce formulaire soit soumis à distance (: remote => true). J'ai une liste de commentaires juste en dessous qui est paginée avec kaminari. Naturellement, je veux que la liste soit rafraîchie. Cependant, comme le commentaire est soumis à 'comments # create', les liens de pagination deviennent incorrects lors d'un nouveau rendu. J'ai essayé d'ajouter <%= paginate @comments, :params => { :controller => "articles", :action => 'show' } %> pour les faire pointer vers la bonne URL, mais cela n'a pas résolu mon problème. Lorsque la liste est nouveau rendu, je reçois:Rails avec téléavertisseur Kaminari et télécommande

ActionView::Template::Error (No route matches 
{:utf8=>"✓",:authenticity_token=>"5VJqDLifXX0O/ttq9rNY0POUbsN678I6Au2iL2Qcv7w=", 
:comment=>{"name"=>"4004053","content"=>"asdf"},:commit=>"Create Comment", 
:action=>"show",:controller=>"articles",:article_id=>"4f24fbb4f4b7b863a4000009", 
:page=>nil}): 

je peux résoudre ce problème en ajoutant l'attribut supplémentaire pour paginer et faire <%= paginate @comments, :custom_url => "/articles/#{@article._id}" %>. Ensuite, je peux changer les vues de kaminari pour définir l'URL de mon custom_url si elle est là. Cependant je n'aime pas beaucoup l'idée.

Ai-je raté quelque chose? Y a-t-il une meilleure manière de faire cela?

Merci d'avance!

Répondre

3

Il est avéré que

<%= paginate @comments, :params => { :controller => "articles", :action => 'show' } %> 

presque travaillé, mais je besoin d'ajouter: id => @ article.id il est devenu

<%= paginate @comments, :params => { :controller => "articles", :action => 'show', :id => article.id } %> 

erreur stupide tout à fait, je vois maintenant. Je n'ai pas compris le routage assez.

Questions connexes