Правильное перенаправление внутри приложения Rails - PullRequest
0 голосов
/ 11 ноября 2011

Внутри моего контроллера у меня есть следующее:

  before_filter :authenticated?, :only => [:edit]

 def authenticated?
    if current_user != User.find(params[:id])
      flash[:alert] = 'Log in!'
      redirect_to login_path :status => 401
    end
  end

Теперь, когда я вошел в систему и ушел, чтобы отредактировать пользователя, все работает, но когда я ушел, чтобы отредактировать пользователя, я не смог бы получить следующее:

No route matches {:action=>"new", :controller=>"sessions", :status=>401}

Почему это? Для справки я включил свои рейк-маршруты ниже.

 users GET     /users(.:format)          {:action=>"index", :controller=>"users"}
        POST   /users(.:format)          {:action=>"create", :controller=>"users"}
new_user GET   /users/new(.:format)      {:action=>"new", :controller=>"users"}
edit_user GET  /users/:id/edit(.:format) {:action=>"edit", :controller=>"users"}
   user GET    /users/:id(.:format)      {:action=>"show", :controller=>"users"}
        PUT    /users/:id(.:format)      {:action=>"update", :controller=>"users"}
        DELETE /users/:id(.:format)      {:action=>"destroy", :controller=>"users"}
sessions POST  /sessions(.:format)       {:action=>"create", :controller=>"sessions"}
new_session GET/sessions/new(.:format)   {:action=>"new", :controller=>"sessions"}
session DELETE /sessions/:id(.:format)   {:action=>"destroy", :controller=>"sessions"}
   root        /                         {:controller=>"pages", :action=>"home"}
contact        /contact(.:format)        {:controller=>"pages", :action=>"contact"}
  about        /about(.:format)          {:controller=>"pages", :action=>"about"}
   help        /help(.:format)           {:controller=>"pages", :action=>"help"}
 signup        /signup(.:format)         {:controller=>"users", :action=>"new"}
               /signup(.:format)         {:controller=>"users", :action=>"new"}
signout        /signout(.:format)        {:controller=>"sessions", :action=>"destroy"}
 signin        /signin(.:format)         {:controller=>"sessions", :action=>"new"}

1 Ответ

1 голос
/ 11 ноября 2011

Я даже не вижу login_path, вы должны иметь возможность перенаправить на signin_path, хотя.

В любом случае, деталь :status критична для ваших нужд?

...