У меня две модели: Snippet
и SnippetComment
. Они также имеют свои собственные контроллеры, а также представления. В /app/views/snippets/show.html.erb
у меня есть форма, которая начинается так:
<% form_for(@new_snippet_comment) do |form| %>
SnippetComment
принадлежит одному Snippet
, а Snippet
принадлежит одному User
. Это означает, что у меня есть эта маршрутизация (making it non-RESTful == making it suck
, как вы знаете):
map.resources :users do |user|
user.resources :snippets do |snippet|
snippet.resources :snippet_comments, :as => "comments"
end
end
Поэтому, когда я отправляю форму SnippetComment
в представлении SnippetController#show
, этот запрос должен быть выполнен:
POST /users/x/snippets/x/comments HTTP/1.1
(где x
- User
или Snippet
id
).
Проблема в том, что я даже не получаю форму для отправки комментариев, а вот что:
NoMethodError in Snippets # show
Показываются
app / views / snippets / show.html.erb где
строка № 29 поднята:
undefined method `snippet_comments_path' for
Извлеченный источник (вокруг строки #29
):
26: <% if current_user %>
27: <h2>Schrijf een nieuwe reactie</h2>
28:
29: <% form_for(@new_snippet_comment) do |form| %>
30:
31: <p>
32: <%= form.text_area :body %>
RAILS_ROOT:
/ Users / jeffatwood / Dev / youjustdontneedmyrealname
Трассировка приложения | Framework Trace |
Полная трассировка
/Users/jeffatwood/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/polymorphic_routes.rb:107:in `__send__'
/Users/jeffatwood/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/polymorphic_routes.rb:107:in `polymorphic_url'
/Users/jeffatwood/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_controller/polymorphic_routes.rb:114:in `polymorphic_path'
/Users/jeffatwood/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_view/helpers/form_helper.rb:298:in `apply_form_for_options!'
/Users/jeffatwood/.gem/ruby/1.8/gems/actionpack-2.3.5/lib/action_view/helpers/form_helper.rb:277:in `form_for'
/Users/jeffatwood/Dev/youjustdontneedmyrealname/app/views/snippets/show.html.erb:29:in `_run_erb_app47views47snippets47show46html46erb'
/Users/jeffatwood/Dev/youjustdontneedmyrealname/app/controllers/snippets_controller.rb:19:in `show'
Запрос
Параметры:
{"id"=>"1",
"user_id"=>"2"}
Показать дамп сеанса
Ответ
Заголовки:
{"Content-Type"=>"text/html",
"Cache-Control"=>"no-cache"}
О, в snippets_controller.rb
У меня есть это:
def show
@snippet = Snippet.find(params[:id], :conditions => { :user_id => params[:user_id] })
@new_snippet_comment = SnippetComment.new
respond_to do |format|
format.html
format.xml
format.json
end
end
Может кто-нибудь помочь мне с этой проблемой? Спасибо