find_scope!错误 - 找不到有效的映射...(Rails和Devise 1.2.1)

时间:2011-03-31 01:18:38

标签: ruby-on-rails devise

错误讯息:

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>

这是我的Full Stack Trace的顶部部分:

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 个答案:

答案 0 :(得分:4)

问题是你的助手confirmation_path被设计的url_helpers覆盖了。

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

基本上,设计认为你想要一个事件的确认路径。

将您的路线更改为

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

然后使用

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

在你的控制器和你使用它的任何其他地方。

答案 1 :(得分:0)

您可能需要检查代码是否有多个devise_for :events声明。在我的情况下,这就是造成这种例外的原因,因为它肯定会让Devise感到困惑。