Недопустимое имя маршрута: 'users/: columnname_index' - не может откат, изменение имени столбца и отображение некоторых страниц

Я создал миграцию, чтобы добавить столбец Urlname в таблицу Users. Затем я добавил индекс миграции. Здесь полученная миграция:

class AddUrlnameToUsers < ActiveRecord::Migration
 def change
 add_column :users, :urlname, :string
 add_index :users, :urlname, :unique => true
 end
end

Затем я использовал rake db: migrate.

schema.rb содержит столбец "urlname" и говорит, что он имеет уникальный индекс. Однако на некоторых страницах моего сайта есть ошибки: Недопустимое имя маршрута: 'users/: urlname_index'.

Хорошо, я не хочу называть это "urlname" в любом случае. Я хочу называть это "permalink". Но теперь я не могу сгенерировать миграцию FixColumnName, RemoveUrlNameFromUsers, и я не могу откатить - то же самое "Недопустимое имя маршрута:" пользователи /: urlname_index "" для всех трех.

Поэтому я удалил add_index :users, :urlname, :unique => true из файла миграции, хотя я уже перенес его. Это не помогло.

Мои маршруты.rb содержат

Crowdpublishtv::Application.routes.draw do
 devise_for :users
 resources :users

 #resources 'users/:urlname', :to => 'User#booklist'
 #match 'users/:urlname_index', :to => 'users#show'

 devise_for :users
 authenticated :user do
 root :to => "users#booklist"
 end

 get "attachments/show"

 resources :users do
 resources :books
 end

 devise_for :users
 resources :users do
 member do
 get 'booklist', 'blog', 'profileinfo', 'readerprofileinfo', 'orgprofileinfo'
 end
 end
 end

Я пробовал комментировать и раскомментировать строки, отмеченные #. Не помогло.

Здесь соответствующий db: migrate status:

Status Migration ID Migration Name
--------------------------------------------------
 up 20130319002105 Create users
 up 20130328235904 ********** NO FILE **********
 up 20130703205730 Add devise to users
 up 20130911002912 Add bookfiles to users
 up 20130917143106 Add urlname to users

* НЕТ ФАЙЛ * было то, что я думал, что я откатился... Но так как это было задолго до того, как добавить URL-адрес пользователям, я уверен, что это не имеет значения.

Любое понимание того, что неверно? Я на рельсах 3.1.0, ruby 1.9.2, с sqlite3, если это имеет значение.

2 ответа

У вас много пользователей devise_for: users на маршрутах. Rb. Удостоверьтесь, что у вас есть только один, а также порядок

Не забудьте разместить свои ресурсы: пользователей ниже маршрута devise_for: users.

как описано здесь https://github.com/plataformatec/devise/wiki/How-To:-Manage-users-through-a-CRUD-interface


В вашей ошибке говорится "Недопустимое имя маршрута", чтобы вы смотрели на свои маршруты, а не на индекс db.

Как отметил Виньреш, у вас есть несколько devise_for ваших маршрутов. Разработчик не генерирует все из них, и я предполагаю, что вы запускали генератор разработки несколько раз (если это так, как они там попали).

Удалите маршруты, которые вы не используете, и сконденсируйте те, которые вы используете.

Ваш вопрос не совсем ясен, и трудно сказать, что вызвало ваши ошибки. Кажется, вы сразу задаете много разных проблем.

  1. Изменение файлов миграции ничего не делает, если они уже запущены. Файлы миграции - это просто скрипты, которые запускаются против вашей базы данных, а затем оставлены в покое. Ваша таблица schema_migrations делает запись о том, что было запущено. После того, как файл был запущен, вы можете сделать "вниз" версию сценария для изменения отката, но изменение файла для удаления строки не влияет на вашу систему.

  2. Очистите маршруты. Руководства по маршрутизации могут помочь вам понять это лучше http://guides.rubyonrails.org/routing.html

Это помогает?

licensed under cc by-sa 3.0 with attribution.