find_scope!ошибка - не удалось найти правильное отображение ... (Rails и Devise 1.2.1) - PullRequest
10 голосов
/ 31 марта 2011

Сообщение об ошибке:

Could not find a valid mapping for #<Event id: 10022, event_name: "test", start_date: "2011-03-31", end_date: "2011-03-31", event_description: "test", created_at: "2011-03-30 03:26:01", updated_at: "2011-03-30 03:26:01", is_ecommerce: false, is_secure: false, event_password: nil, notify_rsvp: false, user_id: 20, start_time: "noon", street_address: "", city: "", state: "", country: "", zipcode: "", website_url: nil, status: "Draft", payment_received: false, is_confirmed: false>

Вот верхняя часть моей полной трассировки стека:

devise (1.2.1) lib/devise/mapping.rb:40:in `find_scope!'
devise (1.2.1) lib/devise/controllers/url_helpers.rb:29:in `confirmation_path'
app/controllers/events_controller.rb:163:in `edit'
actionpack (3.0.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.0.1) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
actionpack (3.0.1) lib/abstract_controller/base.rb:150:in `process_action'
actionpack (3.0.1) lib/action_controller/metal/rendering.rb:11:in `process_action'

Я недавно обновил: Devise 1.2.1 (я также получил ошибку с 1.2.0) Rails 3.0.5 Ruby 1.8.7 WEBrick 1.3.1

Кроме того, у меня есть в моих маршрутах:

devise_for :users

Раньше нормально работал до последних обновлений. Спасибо

Ответы [ 2 ]

4 голосов
/ 14 июля 2011

Проблема в том, что ваш помощник confirmation_path переопределяется с помощью url_helpers от devise.

https://github.com/plataformatec/devise/blob/master/lib/devise/controllers/url_helpers.rb

По сути, devise думает, что вам нужен путь подтверждения для вашего события.

Измените свой маршрут на что-то вроде

match '/admin/events/confirmation/:id' => "events#confirmation", :as => 'confirmation_event'

и затем используйте

redirect_to(confirmation_event_path(@event), :notice => 'Your event has not been confirmed.')

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

0 голосов
/ 02 ноября 2011

Вы можете проверить свой код на наличие нескольких devise_for :events объявлений. Это было причиной такого исключения в моем случае, поскольку это, безусловно, смущает Devise.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...