Неверное действие генерируется для form_for при редактировании

Действие для моей формы редактирования генерируется неправильно. Способ, которым я построил модель, немного отличался от обычного. Сначала я создал модель, используя:

rails g model category name:string description:text

Затем я запустил rake db:migrate Затем я создал каркас, используя:

rails g scaffold_controller Category.

Проблема в том, что в сгенерированной форме редактирования форма, которая отправляется, относится к действию category/1 вместо categories/1.

Я использую рельсы 4. Я не совсем уверен, как решается действие формы, но оно настроено неправильно. С другой стороны, новая форма категории работает нормально, кто-нибудь может помочь?

Кажется, что form_for генерирует неправильное действие, хотя он должен отображать category_path(@category), но когда я печатаю этот путь, он правильный. Есть ли где-нибудь, где хорошо объясняется вспомогательный метод form_for, я искал и не мог его найти.


person Nachshon Schwartz    schedule 31.05.2013    source источник


Ответы (3)


Проверьте свои маршруты и посмотрите, есть ли у вас resources :categories и ничего больше, связанного с Category.

person jokklan    schedule 31.05.2013

Пожалуйста, проверьте все названия созданных файлов/классов.

  • Ваш контроллер должен быть CategoriesController
  • Файл миграции должен иметь create_table :categories do |t|
  • Каталог app/views/categories должен существовать
  • В rake routes все должно быть ...categories..
person Roemer    schedule 31.05.2013
comment
Все, что вы сказали, работает, единственное, что неправильно отображается, - это действие в форме редактирования... действительно странно, может быть, если бы я знал, как form_for(@category) получил это действие, я бы смог его отладить.. .. но я не могу понять это - person Nachshon Schwartz; 31.05.2013

Решение состояло в том, чтобы удалить все изменения и правильно сгенерировать скаффолд, используя:

rails g scaffold Category name:string description:text
person Nachshon Schwartz    schedule 12.06.2013