У меня дьявольское время, чтобы заставить этот конкретный вложенный маршрут работать. Это странно, потому что я перенес несколько маршрутов в новый синтаксис Rails 3, а этот, в частности, просто не работает. Здесь идет.
У меня есть объект с именем "piece", который имеет вложенный объект с именем "piece_comment". Вот как выглядит route.rb:
resources :piece do
resources :piece_rating, :as => :rating
resources :piece_comments, :as => :comments
end
А вот как выглядит кусок / show.html.erb с формой для отправки комментария к фрагменту:
<% @piece_comment = PieceComment.new(:piece_id => @piece.id, :user_id => current_user.id) %>
<%= form_for [@piece, @piece_comment] do |f| %>
<%= f.hidden_field 'piece_comment', 'user_id' %>
<%= f.hidden_field 'piece_comment', 'piece_id' %>
<%= f.text_area 'piece_comment', 'comment' %>
<%= f.submit_tag 'Post' %>
<% end %>
Теперь, что странно, я получаю следующую ошибку, вызванную строкой "form_for":
undefined method `piece_piece_comments_path' for #<#<Class:0x007f80ec732a48>:0x007f80ec737ae8>
Разве :as
в моем файле маршрутов не должен отправлять его в piece_comments_path, а не piece_piece_comments_path? если я изменяю его на :as => :foobar
или что-то подобное, я получаю ту же ошибку. Очевидно, что файл маршрутов не будет работать правильно. (Как ни странно, поведение рейтингового маршрута кажется нормальным.)
Есть идеи, что может быть не так с маршрутизацией?