2011-08-10 5 views
5

ze standardową instalację Rails_Admin użyciu opracować dla uwierzytelniania i CanCan o zezwolenie, dostępu http://localhost:3000/admin jako użytkownik non-admin produkuje następujące logów serwera:RoutingError wynikające z „root_url redirect_to” nie przechodzącej działania

Started GET "/admin" for 127.0.0.1 at 2011-08-09 22:46:10 -0400 
    Processing by RailsAdmin::MainController#index as HTML 
    User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 
Completed 404 Not Found in 151ms 

ActionController::RoutingError (No route matches {:controller=>"gyms"}): 
    app/controllers/application_controller.rb:5:in `block in <class:ApplicationController>' 

Wszystko aż do ostatniej części wydaje się być w porządku. O ile mogę powiedzieć, CanCan ratuje wyjątek prawidłowo i próbuje przekierować do root_url za pomocą następującego kodu:

class ApplicationController < ActionController::Base 
    protect_from_forgery 

    rescue_from CanCan::AccessDenied do |exception| 
    redirect_to root_url, :alert => exception.message 
    end 
end 

TopOut::Application.routes.draw do 
    mount RailsAdmin::Engine => '/admin', :as => 'rails_admin' 
    devise_for :users 

    resources :gyms 

    root :to => "gyms#index" 
end 

Ale z jakiegoś powodu, przekierowanie do root_url, CanCan próbuje tylko trafić

{:controller=>"gyms"} 

zamiast

{:controller=>"gyms", :action=>"index"} 

jest to prawdopodobnie problem z kankana? Czy jest jakiś szczególny aspekt redirect_to lub root_url, które przegapiłem w dokumentach?

Uwaga: jest to duplikat problemu, który otworzyłem na stronie github CanCan, więc na pewno zamknę jeden z nich, jeśli drugi zostanie rozwiązany.

Odpowiedz

6

Na podstawie opinii użytkowników na Github, wydaje się, że trasy są nazwane _scoped, a więc takie zachowanie jest oczekiwane.

Właściwa poprawka jest zadzwonić root_url z main_app następująco:

rescue_from CanCan::AccessDenied do |exception| 
    redirect_to main_app.root_url, :alert => exception.message 
end 

kredytowych dla roztworu idzie bbenezech na https://github.com/sferik/rails_admin/issues/658

Powiązane problemy