Je veux configurer mes modèles, tels que mes messages has_many Commentaires et commentaires has_many Replies. Les commentaires fonctionnent bien. Mais mon application commence à se rompre en disantméthode undefined `model_name 'pour les routes imbriquées
undefined method `model_name' for "/posts/adas/comments/11/replies":String
lorsque j'essaie de configurer les réponses pour les commentaires. Je n'arrive pas à comprendre ce qui déclenche cette erreur. Je peux ajouter des réponses à partir de ma console Rails et les voir dans la vue, mais l'ajout de la balise form_for casse le code. Quelqu'un peut-il s'il vous plaît indiquer quelle est l'erreur et comment je devrais l'acheminer?
Messages # show.html.erb
<h2>Comments</h2>
<% @post.comments.each do |comment| %>
<p>
<b><%= comment.username %></b>
<%= comment.name %>
<% if current_user.email == comment.username || current_user.admin? %>
<%= link_to 'Delete', [comment.post, comment],
:confirm => 'Are you sure?', :method => :delete %>
<% end %>
<p style = "text-indent: 3em">
<% comment.replies.each do |reply| %>
<i><%= reply.author %></i>
<%= reply.content %>
<% end %>
<%= form_for [@reply, post_comment_replies_path(@post, comment)] do |f| %>
<%= f.label :reply %>
<%= f.text_field :content %>
<%= f.submit("Reply") %>
<% end %>
<% end %>
</p>
</p>
<h3>Add a comment:</h3>
<%= form_for([@post, @post.comments.build]) do |f| %>
<%= f.label :comment %><br />
<%= f.text_area :name %>
<%= f.submit %>
<% end %>
replies_controller.rb
class RepliesController < ApplicationController
def create
@reply = @comment.replies.create(reply_params)
redirect_to post_path(@post)
end
private
def reply_params
params.require(:reply).permit(:content)
end
end
routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => { :omniauth_callbacks => "callbacks" }
root 'welcome#index'
resources :posts do
resources :comments do
resources :replies
end
member do
put "like", to: "posts#upvote"
end
end
end
'<% = form_for @reply, url: post_comment_replies_path (@post, commentaire) do | f | %> ' donne la même erreur. Et '<% = form_for [@post, commenter, @répéter] faire | f | %> 'dit que le premier argument ne peut pas être vide. –