Я хочу настроить свои модели, чтобы мои сообщения has_many Комментарии и комментарии has_many Replies. Комментарии работают нормально. Но моя заявка начинает ломаться, говоря, чтоundefined method `model_name 'для вложенных маршрутов
undefined method `model_name' for "/posts/adas/comments/11/replies":String
, когда я пытаюсь настроить ответы для комментариев. Я не могу понять, что вызывает эту ошибку. Я могу добавить ответы из консоли Rails и увидеть их в представлении, но добавление тега form_for нарушает код. Кто-нибудь может указать, что является ошибкой и как я должен ее маршрутизировать?
Сообщений # 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, comment) do | f | %> ' дает ту же ошибку. И '<% = form_for [@post, comment, @reply] do | f | %> 'говорит, что первый аргумент не может быть пустым. –