我认为这是:
<%= form_for @comment, :as => :post, :url => user_ticket_message_comments_path, :html => { :class => "add-comment", :id => "add-comment-" + @ticket.id.to_s } do |f| %>
<%= f.label :body, "Add comment" %>
<%= f.text_area :body %>
<%= f.submit "Add comment" %>
<% end %>
在我的routes.rb中:
resources :users do
resources :tickets do
resources :messages do
resources :comments
end
end
end
我收到路由错误:
No route matches {:controller=>"comments"}
答案 0 :(得分:4)
您似乎缺少用户,故障单和消息:
user_ticket_message_comments_path(@user, @ticket, @message)
您需要这些参数,因为生成的URL如下所示:
/users/:user_id/tickets/:ticket_id/messages/:message_id/comments
没有参数,Rails不知道如何生成该URL。
另外,请考虑Rails应用中的经验法则是"Resources should never be nested more than 1 level deep."
Jamis Buck的This post建议您不要随意嵌套资源,而只使用一级嵌套:
resources :users do
resources :tickets
end
resources :tickets do
resources :messages
end
resources :messages do
resources :comments
end