2013-07-09 4 views
0

У меня есть приложение, которое использует 2 типа ролей: пользователей и администраторов. Для пользователей я перезаписан как RegistrationController и PasswordsController, но после добавления PasswordsController страницу входа для администратора (отличного от пользователя, который является обычаем) дает следующую маршрутизации ошибка:Rails 3 Настройка оформления

Routing Error 

No route matches {:action=>"create", :controller=>"password_resets", :locale=>:admin} 

это мои маршруты. гь файл:

AppName::Application.routes.draw do 

    devise_for :admin 

    namespace :backend do 
    root :to => "home#index" 

    resources :exchanges, :except => :show 
    resources :prices, :except => :show 
    resources :offers 
    resources :newss 
    resources :users, :except => :show 

    scope ':locale', :locale => /en|ro/ do 

    namespace :profile do 
     root :to => 'home#index' 
     resources :orders do 
     resources :items 
     end 
    end 


    devise_for :users, :skip => [:sessions, :registrations, :passwords] 

    devise_scope :user do 
     get 'logare' => 'registrations#logare', :as => :new_user_session 
     post 'logare' => 'devise/sessions#create', :as => :user_session 
     delete 'index' => 'devise/sessions#destroy', :as => :destroy_user_session 
     get 'inregistrare' => 'registrations#new', :as => :new_user_registration 
     post 'inregistrare' => 'registrations#create', :as => :user_registration 
     get 'get_city_list' => 'registrations#get_city_list', :as => :get_city_list 
     get 'edit' => 'registrations#edit', :as => :user_edit 
     post 'edit' => 'registrations#update', :as => :user_update 
     get 'new_password' => 'password_resets#new', :as => :password_reset 
     post 'new_password' => 'password_resets#create', :as => :new_password 
     get 'edit_password' => 'password_resets#edit', :as => :edit_password_reset 
     post 'edit_password' => 'password_resets#update', :as => :update_password 
    end 

    end 

    match '/:locale' => 'home#index' 
    root :to => 'Home#index' 

    match '*a', :to => 'errors#routing' 
end 

, но как я уже говорил, этот URL/администратор/sign_in выдает ошибку маршрутизации упоминается.

Dunno, что мне не хватает. Если я удалю PasswordsController, все будет работать снова.

PS: вот PasswordResetsController:

class PasswordResetsController < ApplicationController 
    def new 

    end 

    def create 
    user = User.find_by_email(params[:email]) 
    user.send_password_reset if user 
    redirect_to new_user_session_path, :notice => t('password_reset_notice') 
    end 

    def edit 
    @user = User.find_by_reset_password_token!(params[:reset_token]) 
    end 

    def update 
    @errors_user = nil 
    @user = User.find_by_reset_password_token!(params[:token]) 
    if @user 
     if @user.reset_password_sent_at < 2.hours.ago 
     redirect_to password_reset_path, :alert => t('password_expired') 
     else 
     @user.password = params[:user][:password] 
     @user.password_confirmation = params[:user][:password_confirmation] 
     unless @user.save 
      @errors_user = @user.errors.full_messages.join(';<br/>') + '.' 
     end 
     unless @errors_user.nil? 
      @reset_token = params[:token] 
      render :edit 
     else 
      redirect_to new_user_session_path, :notice => t('password_change_success') 
     end 
     end 
    end 
    end 
end 

моя форма Войти (для пользователей, для администратора я использую стандарт разработать один):

<div class='signin-container'> 
<%= form_for(:user, :url => user_session_path(@user)) do |f| %> 
    <%= f.label :email, 'Email:', :id => 'username_label', :class => 'general-signin' %> 
    <%= f.text_field :email, :id => 'username-field', :class => 'general-signin' %> 

    <%= f.label :password, t('inregistrare.parola'), :id => 'pass_label', :class => 'general-signin' %> 
    <%= f.password_field :password, :size => 23, :id => 'pass-field', :class => 'general-signin' %> 
    <%= f.check_box :remember_me, :id => 'remember' %> 
    <%= f.label :remember_me, :id => 'remember-label' %> 
    <%= f.submit "", :class => 'general-signin', :id => 'buton-signin' %> 
<% end %> 
<a href=<%= new_user_registration_path %>><span class='creeaza'><%= t('logare.creeaza') %></span></a> 
<a href=<%= password_reset_path %>><span class='forgot-pass'><%= t('forgot_password') %></span></a> 
</div> 
+0

Как выглядит ваша форма входа? –

+0

Не RoR dev здесь, но ': locale =>: admin' выглядит довольно странно для меня – orique

ответ

1

понял это ... было сформировать взгляды Разрабатывают и редактировать общие/_links.erb

<%= link_to "Forgot your password?", new_password_path(resource_name) %><br /> 

стал

<%= link_to "Forgot your password?", new_password_path(:locale => I18n.locale) %><br /> 
Смежные вопросы