Je reprend le tuto “Getting Started” là où je l’avais laissé. Là, je reprend un peu le fil du tuto pour comprendre comment les Posts et les Comments sont associés. Le fait que le dernier soit imbriqué dans le premier complique pas mal de trucs. Et j’aimerais me faire la main sur des projets de test avant de me lancer dans ma propre appli (j’en dirai davantage bientôt).

View pour l’index des commentaires

Le tuto fournit un View tout fait. Tant mieux, parce que j’ai pas bien compris les boucles pour les Views.

<h1>Comments for <%= @post.title %></h1>
<table> 
<tr> 
<th>Commenter</th>  
<th>Body</th>  
</tr> 
<% for comment in @comments %>  
<tr>  
<td><%=h comment.commenter %></td>  
<td><%=h comment.body %></td>  
<td><%= link_to 'Show', post_comment_path(@post, comment) %></td>  
<td>  <%= link_to 'Edit', edit_post_comment_path(@post, comment) %>  </td>  
<td>  <%= link_to 'Destroy', post_comment_path(@post, comment), :confirm => 'Are you sure?', :method => :delete %>  
</td>  
</tr> 
<% end %> 
</table> 
<br /> 
<%= link_to 'New comment', new_post_comment_path(@post) %> 
<%= link_to 'Back to Post', @post %>

Ok alors j’ai le titre du post. Normal, vu que les commentaires sont associés à 1 post. Puis j’ai la boucle <% for comment in @comments %>. Mouais, je comprends le truc. Mais je vois pas pourquoi ce ne serait pas comme pour l’affichage des posts : <% form_for(@post) do |f| %>.

Pourquoi j’ai pas un bloc do/end aussi pour les commentaires ? Ok, c’est pas un formulaire. Mais je pourrais avoir un truc du style <% for(@comments) do |c| %> non ? Par analogie, ça serait comme ça.

Une histoire de liens

Et puis, y a tous ces liens. Y a pas de doc là-dessus. Ok, je veux bien que Rails ait ses contraintes, “Convention over configuration”, mais faudrait les expliquer ces conventions! C’est très lié aux noms que l’on donne aux différents fichiers/objets. Du genre, “posts”, “Post”, “@post”.

Mais pour les liens, j’ai ici 2 fois : post_comment_path(@post, comment) pour show et pour delete, la seule différence étant que pour le second j’ai :method => :delete. Pourquoi pour edit j’ai edit_post_comment_path(@post, comment) au lieu d’avoir :method => :edit ?

Bref, j’ai l’impression que pour chaque action, la syntaxe des liens est différente. Un coup, y a un param en plus (je veux bien), un autre coup, le nom du lien change (pour “edit”). Pourquoi y a pas une syntaxe identique pour tous les liens ?