2013-05-03 32 views
1

我想將Devise模型添加到RefineryCMS應用程序以允許客戶登錄並管理其配置文件。這樣做似乎是合理的,因爲客戶與CMS無關。由於RefineryCMS使用Devise,我認爲這將是一件簡單的事情。我從一個空白的平板開始,而不是與現有的應用程序集成。將設計模型添加到RefineryCMS應用程序中的問題

步驟來重現我遇到的問題:

$ refinerycms my_fun_app 
$ cd my_fun_app 
$ rails generate devise customer 
$ rake db:migrate 

做的步驟後上面我火起來的應用程序(使用rails server)和去http://localhost:3000我得到提示創建一個煉油廠的用戶。一切都很好。

問題是,當我去http://localhost:3000/customers/sign_up我得到一個NoMethodError

undefined method `customer_registration_path' for #<ActionDispatch::Routing::RoutesProxy:0x00000003cc9810> 

錯誤是從該行/home/tom/.rvm/gems/ruby-2.0.0-p0/提高寶石/設計-2.0.5 /應用/視圖/設計/註冊/ new.html.erb:

​​

如何解決這個問題的任何想法?

回答

0

嘗試改變這行代碼:

​​

<%= form_for(resource, :as => resource_name, :url => customer_registration_path(resource_name)) do |f| %> 
1

這是RefineryCMS一個已知的問題,因爲它是基於設計和設置設計作爲自己的路:

Devise.setup do |config| 
    # Please do not change the router_name away from :refinery 
    # otherwise Refinery may not function properly. Thanks! 
    config.router_name = :refinery 
end 

所以在Devise中,URL幫助程序找不到在您的應用程序中定義的那個。

這個問題似乎沒有正式的解決方案,RefineryCMS的工作人員正在研究這個問題,因此它可能在未來的版本中得到修復。然而,關於如何將Refinery和Devise集成到現有的Rails 3.2應用程序中,有一篇很好的文章,可能會給你一些想法:http://sdownie.com/blogs/integrating-refinery-rails-3-2-into-your-existing-rails-app

希望這會有所幫助。

0

我通過將url更改爲硬編碼路徑得到了這個工作。例如,如果你運行rake路線,並得到:

$ bundle exec rake routes | grep devise 
cancel_customer_registration GET /customers/cancel(.:format)  devise/registrations#cancel 
     customer_registration POST /customers(.:format)    devise/registrations#create 
    new_customer_registration GET /customers/sign_up(.:format)  devise/registrations#new 
    edit_customer_registration GET /customers/edit(.:format)   devise/registrations#edit 
          PUT /customers(.:format)    devise/registrations#update 
          DELETE /customers(.:format)    devise/registrations#destroy 

那麼你會改變這行代碼:

​​

<%= form_for(resource, :as => resource_name, :url => "/customers") do |f| %>