У меня две модели, администраторы и пользователи. Я установил scoped views = true в devise.rb. Я также создал два разных набора разрабатываемых представлений. По какой-то причине, когда я нажимаю на регистрацию прав администратора, он дает мне ошибкуDevise Views with Multiple Models
NoMethodError in Aregistrations#edit
undefined method `email' for nil:NilClass
Он подчеркивает это:
<%= gravatar_for @user %>
и указывает на «приложение/просмотров/изобрести/регистрации/edit.html .erb»
В моей "конфигурации/инициализатора/devise.rb" файл имеет:
config.scoped_views = true
В моем "конфигурации/routes.rb" файла У меня есть
devise_for :admins, :controllers => {:registrations => "aregistrations"}
devise_for :users, :controllers => {:registrations => "registrations"}, :path_prefix => 'd'
resources :users, :only =>[:show]
В моих "приложение/контроллерах/aregistrations_controller.rb" У меня есть
def update
new_params = params.require(:admin).permit(:email, :username, :current_password, :password, :password_confirmation)
change_password = true
if params[:admin][:password].blank?
params[:admin].delete("password")
params[:admin].delete("password_confirmation")
new_params = params.require(:admin).permit(:email, :username)
change_password = false
end
@admin = Admin.find(current_admin.id)
is_valid = false
if change_password
is_valid = @admin.update_with_password(new_params)
else
is_valid = @admin.update_without_password(new_params)
end
if is_valid
set_flash_message :notice, :updated
sign_in @admin, :bypass => true
redirect_to after_update_path_for(@admin)
else
render "edit"
end
end
В моих взглядах У меня есть папка для разработки - для модели пользователя и папки администраторов для модели администратора.
В моей «приложение/просмотров/изобрести/регистрации/edit.html.erb» У меня есть
<%= gravatar_for @user %>
<a href="http://gravatar.com/emails">change</a></br></br></br></br>
Я его настроить, чтобы изменить свой профиль и ваше gravtar изображение для пользователей только.
В моей «приложение/просмотров/макеты/_header.html.erb» файла У меня есть
<% if admin_signed_in? %>
<li><%= link_to "Edit Account", edit_admin_registration_path %></li>
<% else %>
.....
<% end %>
Почему Разрабатывают ищет пользователя Gravatar, когда я нажимаю на редактирование админы путь и область видимости взгляды?
-------------------- редактировать В моем ** "приложение/контроллерах/users_controller.rb" ** файл
class UsersController < ApplicationController
before_filter :authenticate_admin!, :except => [:show]
def index
@users = User.paginate(page: params[:page])
end
def show
@user = User.find_by_username(params[:id])
@reviews = @user.reviews.paginate(page: params[:page])
end
end
Совет, чтобы иметь подкаталог в приложении/контроллерах, является ключевым для настройки scoped_views. Благодарю. – craigq