ActiveAdmin на Heroku - маршруты не работают должным образом - PullRequest
1 голос
/ 28 августа 2011

Это действительно расстраивает. АА работал очень хорошо для меня, и я думаю, что попробовал почти все. Вот моя проблема:

На локальном хосте все работает нормально, но как только я в Heroku, происходят странные вещи.

My Dashboard имеет [Badge] и [Student], среди прочих.

Я могу просмотреть все значки через /admin/badges. Однако, как только я выполняю правку / просмотр / показ, в Heroku что-то идет не так, в то время как на localhost все работает.

При осмотре это происходит:

ActionView::Template::Error (No route matches {:action=>"edit", :controller=>"admin/students", :id=>#<Student id: nil, email: "", encrypted_password: "", password_salt: "", reset_password_token: nil, remember_token: nil, remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil, avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil, name: nil, role: nil, school: nil, parent_tutor_email: nil, parent_tutor_token: nil, pending_badge: nil, proficiency: 0.0, created_at: nil, account_type: "free", chargify_id: nil, fb_id: nil, score: 0, level_id: nil, special_bonuses: nil, birthday: nil, edu_level: nil>}):

1: render renderer_for(:show)

Кажется, что :id должен быть идентификатором значка, но он забит объектом Student, который пуст.

Вот мой файл route.rb:

WitsApp::Application.routes.draw do

  ActiveAdmin.routes(self)    
  devise_for :admin_users, ActiveAdmin::Devise.config


  devise_for :students, :controllers => {:registrations => "registrations", :sessions => "students_sessions", :passwords =>"devise/passwords"} do
    match 'students/sign_up'              => 'registrations#create',      :as => "student_sign_up"
    get   'students/sign_out'             => 'students_sessions#destroy'
    get   'students/sign_in'              => 'pages#welcome'
    get   'students/password/new'         => 'devise/passwords#new' 
    get   'students/password/edit'        => 'devise/passwords#edit' 
    post  'students/password'             => 'devise/passwords#create'
    put   'students/password'             => 'devise/passwords#update'

    get   'students', :to => 'students#show', :as => :student_root
    resources :badges
    resources :students
  end

  match '/sign_up' => 'pages#welcome', :as => "sign_up"

  root :to => "pages#home"
end

Вот маршруты рейка (усеченные), если это поможет:

admin_dashboard        /admin(.:format)                                       {:action=>"index", :controller=>"admin/dashboard"}
         admin_comments GET    /admin/comments(.:format)                              {:action=>"index", :controller=>"admin/comments"}
                        POST   /admin/comments(.:format)                              {:action=>"create", :controller=>"admin/comments"}
      new_admin_comment GET    /admin/comments/new(.:format)                          {:action=>"new", :controller=>"admin/comments"}
     edit_admin_comment GET    /admin/comments/:id/edit(.:format)                     {:action=>"edit", :controller=>"admin/comments"}
          admin_comment GET    /admin/comments/:id(.:format)                          {:action=>"show", :controller=>"admin/comments"}
                        PUT    /admin/comments/:id(.:format)                          {:action=>"update", :controller=>"admin/comments"}
                        DELETE /admin/comments/:id(.:format)                          {:action=>"destroy", :controller=>"admin/comments"}
           admin_topics GET    /admin/topics(.:format)                                {:action=>"index", :controller=>"admin/topics"}
                        POST   /admin/topics(.:format)                                {:action=>"create", :controller=>"admin/topics"}
        new_admin_topic GET    /admin/topics/new(.:format)                            {:action=>"new", :controller=>"admin/topics"}
       edit_admin_topic GET    /admin/topics/:id/edit(.:format)                       {:action=>"edit", :controller=>"admin/topics"}
            admin_topic GET    /admin/topics/:id(.:format)                            {:action=>"show", :controller=>"admin/topics"}
                        PUT    /admin/topics/:id(.:format)                            {:action=>"update", :controller=>"admin/topics"}
                        DELETE /admin/topics/:id(.:format)                            {:action=>"destroy", :controller=>"admin/topics"}
           admin_badges GET    /admin/badges(.:format)                                {:action=>"index", :controller=>"admin/badges"}
                        POST   /admin/badges(.:format)                                {:action=>"create", :controller=>"admin/badges"}
        new_admin_badge GET    /admin/badges/new(.:format)                            {:action=>"new", :controller=>"admin/badges"}
       edit_admin_badge GET    /admin/badges/:id/edit(.:format)                       {:action=>"edit", :controller=>"admin/badges"}
            admin_badge GET    /admin/badges/:id(.:format)                            {:action=>"show", :controller=>"admin/badges"}
                        PUT    /admin/badges/:id(.:format)                            {:action=>"update", :controller=>"admin/badges"}
                        DELETE /admin/badges/:id(.:format)                            {:action=>"destroy", :controller=>"admin/badges"}
         admin_students GET    /admin/students(.:format)                              {:action=>"index", :controller=>"admin/students"}
                        POST   /admin/students(.:format)                              {:action=>"create", :controller=>"admin/students"}
      new_admin_student GET    /admin/students/new(.:format)                          {:action=>"new", :controller=>"admin/students"}
     edit_admin_student GET    /admin/students/:id/edit(.:format)                     {:action=>"edit", :controller=>"admin/students"}
          admin_student GET    /admin/students/:id(.:format)                          {:action=>"show", :controller=>"admin/students"}
                        PUT    /admin/students/:id(.:format)                          {:action=>"update", :controller=>"admin/students"}
                        DELETE /admin/students/:id(.:format)                          {:action=>"destroy", :controller=>"admin/students"}

У кого-нибудь есть идеи? Спасибо, что нашли время!

1 Ответ

0 голосов
/ 29 августа 2011

После долгих потянув за волосы, я нашел проблему и решение.

Причина в том, что я переопределил def resource в ApplicationHelper и всегда заставляю его возвращать Student.Поэтому мне пришлось переопределить def resource так, чтобы оно выглядело так:

def resource
    @resource = Badge.find_by_id(params[:id]) || Badge.new
end

И все снова заработало бы.Я просто не уверен, почему это не сорвалось раньше.(

...