如何从引擎中访问主Rails主应用控制器?

时间:2012-05-23 14:30:13

标签: ruby-on-rails refinerycms

我在/安装了Refinery,我正在尝试将其集成到我现有的应用程序中。 (我也是Rails的新手:)。

我已覆盖views/refinery/_header.html.erb以在页面顶部添加登录/注销/编辑个人资料菜单:

<% if current_user %>
    <%= link_to current_user.email, :controller => "users", :action => :edit, :id => current_user.id %>
    <%= link_to "Log out", main_app.logout_url %>
<% else %>
    <%= link_to "Sign Up", main_app.signup_url %> or
    <%= link_to "Log In", main_app.login_url %>
<% end %>

但是,此代码会在加载时生成错误:

No route matches {:controller=>"refinery/users", :action=>"edit", :id=>"a7ruusdt"}

问题

  1. 重写_header.html.erb是实现这一目标的最佳做法吗?
  2. 如果是这样,我如何从Refinery标题中访问我的应用程序控制器?换句话说,我如何从引擎内访问主应用程序的控制器?
  3. 这是rake routes输出:

    $ rake routes
           logout GET    /logout(.:format)             sessions#destroy
            login GET    /login(.:format)              sessions#new
           signup GET    /signup(.:format)             users#new
            users GET    /users(.:format)              users#index
                  POST   /users(.:format)              users#create
         new_user GET    /users/new(.:format)          users#new
        edit_user GET    /users/:id/edit(.:format)     users#edit
             user GET    /users/:id(.:format)          users#show
                  PUT    /users/:id(.:format)          users#update
                  DELETE /users/:id(.:format)          users#destroy
         sessions GET    /sessions(.:format)           sessions#index
                  POST   /sessions(.:format)           sessions#create
      new_session GET    /sessions/new(.:format)       sessions#new
     edit_session GET    /sessions/:id/edit(.:format)  sessions#edit
          session GET    /sessions/:id(.:format)       sessions#show
                  PUT    /sessions/:id(.:format)       sessions#update
                  DELETE /sessions/:id(.:format)       sessions#destroy
        followers GET    /followers(.:format)          followers#index
                  POST   /followers(.:format)          followers#create
     new_follower GET    /followers/new(.:format)      followers#new
    edit_follower GET    /followers/:id/edit(.:format) followers#edit
         follower GET    /followers/:id(.:format)      followers#show
                  PUT    /followers/:id(.:format)      followers#update
                  DELETE /followers/:id(.:format)      followers#destroy
         refinery        /                             Refinery::Core::Engine
    
    Routes for Refinery::Core::Engine:
                                           /system/resources/*dragonfly(.:format)       <Dragonfly::App name=:refinery_resources >
            insert_admin_resources GET     /refinery/resources/insert(.:format)         refinery/admin/resources#insert
                   admin_resources GET     /refinery/resources(.:format)                refinery/admin/resources#index
                                   POST    /refinery/resources(.:format)                refinery/admin/resources#create
                new_admin_resource GET     /refinery/resources/new(.:format)            refinery/admin/resources#new
               edit_admin_resource GET     /refinery/resources/:id/edit(.:format)       refinery/admin/resources#edit
                    admin_resource PUT     /refinery/resources/:id(.:format)            refinery/admin/resources#update
                                   DELETE  /refinery/resources/:id(.:format)            refinery/admin/resources#destroy
                                           /system/images/*dragonfly(.:format)          <Dragonfly::App name=:refinery_images >
               insert_admin_images GET     /refinery/images/insert(.:format)            refinery/admin/images#insert
                      admin_images GET     /refinery/images(.:format)                   refinery/admin/images#index
                                   POST    /refinery/images(.:format)                   refinery/admin/images#create
                   new_admin_image GET     /refinery/images/new(.:format)               refinery/admin/images#new
                  edit_admin_image GET     /refinery/images/:id/edit(.:format)          refinery/admin/images#edit
                       admin_image PUT     /refinery/images/:id(.:format)               refinery/admin/images#update
                                   DELETE  /refinery/images/:id(.:format)               refinery/admin/images#destroy
                   admin_dashboard GET     /refinery/dashboard(.:format)                refinery/admin/dashboard#index
     admin_disable_upgrade_message         /refinery/disable_upgrade_message(.:format)  refinery/admin/dashboard#disable_upgrade_message
                                           /system/resources/*dragonfly(.:format)       <Dragonfly::App name=:refinery_resources >
                                   GET     /refinery/resources/insert(.:format)         refinery/admin/resources#insert
                                   GET     /refinery/resources(.:format)                refinery/admin/resources#index
                                   POST    /refinery/resources(.:format)                refinery/admin/resources#create
                                   GET     /refinery/resources/new(.:format)            refinery/admin/resources#new
                                   GET     /refinery/resources/:id/edit(.:format)       refinery/admin/resources#edit
                                   PUT     /refinery/resources/:id(.:format)            refinery/admin/resources#update
                                   DELETE  /refinery/resources/:id(.:format)            refinery/admin/resources#destroy
                                           /system/images/*dragonfly(.:format)          <Dragonfly::App name=:refinery_images >
                                   GET     /refinery/images/insert(.:format)            refinery/admin/images#insert
                                   GET     /refinery/images(.:format)                   refinery/admin/images#index
                                   POST    /refinery/images(.:format)                   refinery/admin/images#create
                                   GET     /refinery/images/new(.:format)               refinery/admin/images#new
                                   GET     /refinery/images/:id/edit(.:format)          refinery/admin/images#edit
                                   PUT     /refinery/images/:id(.:format)               refinery/admin/images#update
                                   DELETE  /refinery/images/:id(.:format)               refinery/admin/images#destroy
                   admin_dashboard GET     /refinery/dashboard(.:format)                refinery/admin/dashboard#inde
     admin_disable_upgrade_message         /refinery/disable_upgrade_message(.:format)  refinery/admin/dashboard#disable_upgrade_message
                                           /system/resources/*dragonfly(.:format)       <Dragonfly::App name=:refinery_resources >
                                   GET     /refinery/resources/insert(.:format)         refinery/admin/resources#insert
                                   GET     /refinery/resources(.:format)                refinery/admin/resources#index
                                   POST    /refinery/resources(.:format)                refinery/admin/resources#create
                                   GET     /refinery/resources/new(.:format)            refinery/admin/resources#new
                                   GET     /refinery/resources/:id/edit(.:format)       refinery/admin/resources#edit
                                   PUT     /refinery/resources/:id(.:format)            refinery/admin/resources#update
                                   DELETE  /refinery/resources/:id(.:format)            refinery/admin/resources#destroy
                                           /system/images/*dragonfly(.:format)          <Dragonfly::App name=:refinery_images >
                                   GET     /refinery/images/insert(.:format)            refinery/admin/images#insert
                                   GET     /refinery/images(.:format)                   refinery/admin/images#index
                                   POST    /refinery/images(.:format)                   refinery/admin/images#create
                                   GET     /refinery/images/new(.:format)               refinery/admin/images#new
                                   GET     /refinery/images/:id/edit(.:format)          refinery/admin/images#edit
                                   PUT     /refinery/images/:id(.:format)               refinery/admin/images#update
                                   DELETE  /refinery/images/:id(.:format)               refinery/admin/images#destroy
                   admin_dashboard GET     /refinery/dashboard(.:format)                refinery/admin/dashboard#index
     admin_disable_upgrade_message         /refinery/disable_upgrade_message(.:format)  refinery/admin/dashboard#disable_upgrade_message
                              root GET     /                                            refinery/pages#home
                     preview_pages POST    /pages/preview(.:format)                     refinery/pages#preview
                      preview_page GET|PUT /pages/*path/preview(.:format)               refinery/pages#preview
                              page GET     /pages/:id(.:format)                         refinery/pages#show
                             admin GET     /refinery/pages/*path/edit(.:format)         refinery/admin/pages#edit
              admin_children_pages GET     /refinery/pages/*path/children(.:format)     refinery/admin/pages#children
                                   PUT     /refinery/pages/*path(.:format)              refinery/admin/pages#update
                                   DELETE  /refinery/pages/*path(.:format)              refinery/admin/pages#destroy
      update_positions_admin_pages POST    /refinery/pages/update_positions(.:format)   refinery/admin/pages#update_positions
                       admin_pages GET     /refinery/pages(.:format)                    refinery/admin/pages#index
                                   POST    /refinery/pages(.:format)                    refinery/admin/pages#create
                    new_admin_page GET     /refinery/pages/new(.:format)                refinery/admin/pages#new
                   edit_admin_page GET     /refinery/pages/:id/edit(.:format)           refinery/admin/pages#edit
                        admin_page PUT     /refinery/pages/:id(.:format)                refinery/admin/pages#update
                                   DELETE  /refinery/pages/:id(.:format)                refinery/admin/pages#destroy
       link_to_admin_pages_dialogs GET     /refinery/pages_dialogs/link_to(.:format)    refinery/admin/pages_dialogs#link_to
      test_url_admin_pages_dialogs GET     /refinery/pages_dialogs/test_url(.:format)   refinery/admin/pages_dialogs#test_url
    test_email_admin_pages_dialogs GET     /refinery/pages_dialogs/test_email(.:format) refinery/admin/pages_dialogs#test_email
                  admin_page_parts POST    /refinery/page_parts(.:format)               refinery/admin/page_parts#create
               new_admin_page_part GET     /refinery/page_parts/new(.:format)           refinery/admin/page_parts#new
                   admin_page_part DELETE  /refinery/page_parts/:id(.:format)           refinery/admin/page_parts#destroy
         new_refinery_user_session GET     /refinery/users/login(.:format)              refinery/sessions#new
             refinery_user_session POST    /refinery/users/login(.:format)              refinery/sessions#create
     destroy_refinery_user_session DELETE  /refinery/users/logout(.:format)             refinery/sessions#destroy
            refinery_user_password POST    /refinery/users/password(.:format)           refinery/passwords#create
        new_refinery_user_password GET     /refinery/users/password/new(.:format)       refinery/passwords#new
       edit_refinery_user_password GET     /refinery/users/password/edit(.:format)      refinery/passwords#edit
                                   PUT     /refinery/users/password(.:format)           refinery/passwords#update
         new_refinery_user_session GET     /refinery/login(.:format)                    refinery/sessions#new
     destroy_refinery_user_session GET     /refinery/logout(.:format)                   refinery/sessions#destroy
    new_refinery_user_registration GET     /refinery/users/register(.:format)           refinery/users#new
        refinery_user_registration POST    /refinery/users/register(.:format)           refinery/users#create
                         wymiframe GET     /wymiframe(/:id)(.:format)                   refinery/fast#wymiframe
                           message GET     /refinery/message(.:format)                  refinery/fast#message
                        admin_root         /refinery(.:format)                          refinery/admin/dashboard#index
                      admin_dialog GET     /refinery/dialogs/:id(.:format)              refinery/admin/dialogs#show
    refinery_update_menu_positions         /refinery/update_menu_positions(.:format)    refinery/admin/core#update_plugin_positions
                                   GET     /sitemap.xml(.:format)                       refinery/sitemap#index {:format=>"xml"}
                       admin_users GET     /refinery/users(.:format)                    refinery/admin/users#index
                                   POST    /refinery/users(.:format)                    refinery/admin/users#create
                    new_admin_user GET     /refinery/users/new(.:format)                refinery/admin/users#new
                   edit_admin_user GET     /refinery/users/:id/edit(.:format)           refinery/admin/users#edit
                        admin_user PUT     /refinery/users/:id(.:format)                refinery/admin/users#update
                                   DELETE  /refinery/users/:id(.:format)                refinery/admin/users#destroy
                                           /refinery/*path(.:format)                    refinery/admin/base#error_404
                                   GET     /refinery/users(.:format)                    refinery/admin/users#index
                                   POST    /refinery/users(.:format)                    refinery/admin/users#create
                                   GET     /refinery/users/new(.:format)                refinery/admin/users#new
                                   GET     /refinery/users/:id/edit(.:format)           refinery/admin/users#edit
                                   PUT     /refinery/users/:id(.:format)                refinery/admin/users#update
                                   DELETE  /refinery/users/:id(.:format)                refinery/admin/users#destroy
                                           /refinery/*path(.:format)                    refinery/admin/base#error_404
                   marketable_page GET     /*path(.:format)                             refinery/pages#show
                                   GET     /refinery/users(.:format)                    refinery/admin/users#index
                                   POST    /refinery/users(.:format)                    refinery/admin/users#create
                                   GET     /refinery/users/new(.:format)                refinery/admin/users#new
                                   GET     /refinery/users/:id/edit(.:format)           refinery/admin/users#edit
                                   PUT     /refinery/users/:id(.:format)                refinery/admin/users#update
                                   DELETE  /refinery/users/:id(.:format)                refinery/admin/users#destroy
                                           /refinery/*path(.:format)                    refinery/admin/base#error_404
                                   GET     /refinery/users(.:format)                    refinery/admin/users#index
                                   POST    /refinery/users(.:format)                    refinery/admin/users#create
                                   GET     /refinery/users/new(.:format)                refinery/admin/users#new
                                   GET     /refinery/users/:id/edit(.:format)           refinery/admin/users#edit
                                   PUT     /refinery/users/:id(.:format)                refinery/admin/users#update
                                   DELETE  /refinery/users/:id(.:format)                refinery/admin/users#destroy
                                           /refinery/*path(.:format)                    refinery/admin/base#error_404
    

    注意:我已经推出了自己的身份验证,但它没有与Refinery集成,也不是我想要的。

1 个答案:

答案 0 :(得分:1)

您可以在路由前使用main_app和“engine_name”来访问所需的路径。鉴于您有一个名为Foo的引擎,如Foo :: Engine:

main_app.pages_url
foo.pages_url
相关问题