У меня вчера это работало, я не знаю, что я сделал, чтобы сломать его.Rails 3 Ошибка маршрутизации
Вот маршруты для RESTful контроллера:
brand_responsibilities GET /brands/:brand_id/responsibilities(.:format) {:action=>"index", :controller=>"responsibilities"}
brand_responsibilities POST /brands/:brand_id/responsibilities(.:format) {:action=>"create", :controller=>"responsibilities"}
new_brand_responsibility GET /brands/:brand_id/responsibilities/new(.:format) {:action=>"new", :controller=>"responsibilities"}
edit_brand_responsibility GET /brands/:brand_id/responsibilities/:id/edit(.:format) {:action=>"edit", :controller=>"responsibilities"}
brand_responsibility GET /brands/:brand_id/responsibilities/:id(.:format) {:action=>"show", :controller=>"responsibilities"}
brand_responsibility PUT /brands/:brand_id/responsibilities/:id(.:format) {:action=>"update", :controller=>"responsibilities"}
brand_responsibility DELETE /brands/:brand_id/responsibilities/:id(.:format) {:action=>"destroy", :controller=>"responsibilities"}
Моя форма выглядит следующим образом:
<%= form_for :responsibility, :remote => true do |f| %>
<%= f.hidden_field :access_request_id, :value => ar.id %>
<%= f.hidden_field :user_id, :value => user.id %>
<%= f.hidden_field :brand_id, :value => @brand.id %>
<%= f.submit %>
<% end %>
Но я получаю 404 теперь с этим журнального сообщения:
Started POST "/brands/30/responsibilities" for 127.0.0.1 at Tue Oct 26 10:47:17 -0400 2010
ActionController::RoutingError (No route matches "/brands/30/responsibilities"):
Наверное, похоже, что матчи соответствуют мне! Что мне не хватает?
Обновление: Я также попытался это в консоли:
rs.recognize_path '/brands/30/responsibilities', :method => :post
и ответ:
=> {:controller=>"responsibilities", :brand_id=>"30", :action=>"create"}
Что такое мое дело?
UPDATE # 2:
Я нашел причину, хотя я не знаю, почему это причина. У меня есть другое поле:
<%= button_to "Deny", brand_responsibilities_path(@brand, :ar => ar), :remote => true, :method => :delete %>
Это я был включен в форму. Раньше я оставил это для краткости, потому что я не думал, что это важно. Я вижу, что это была плохая идея.
Кто-нибудь знает, почему наличие этой строки в форме вызывает странную ошибку маршрутизации?
Странно! С информацией, которую вы предоставили, она должна работать. Перезапустили ли вы сервер после добавления маршрутов в 'config/routes.rb'? – Ariejan
Это, вероятно, не поможет вашей проблеме, но это просто приятно узнать ... вы можете сделать <% form_for [@brand,: ответственность]%>, чтобы избежать скрытого поля, передающего идентификатор бренда. Это также будет генерировать действие/brands /: id/обязанностей в форме. Кроме того, единственным объяснением вашей проблемы является то, что в приоритете есть маршрут с более высоким приоритетом (ниже в списке маршрутов), переопределяющий те, которые вы вставили. – jenjenut233
Да, я перезапустил и все. Я переконфигурировал форму на ваш пример Джен, и я тоже это увидел в Bates 'Controller в Rails 3 screencast. Еще одно и то же. Мой маршрут: ресурсы: бренды делают ресурсов: обязанности конца Там нет ничего общего над ним или под ним в routes.rb. – AKWF