2012-04-19 2 views
0

Я поклонник Devise и использовал Devise для многих приложений Ruby on Rails.Rails Authentication - Query on Customizing Devise Views

Я обычно следую приведенным ниже RailCasts для установки и настройки Devise.

http://railscasts.com/episodes/209-introducing-devise

http://railscasts.com/episodes/210-customizing-devise

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

rails generate devise:views 

Это создает мнения, связанные с проверкой подлинности в папка apps/views/devise. Мы можем настроить внешний вид.

Мои вопросы: как разрешить несколько просмотров для входа? Например, я хочу, чтобы пользователь мог войти в систему с самой корневой страницы, нажав кнопку «Вход» на навигационной панели, которая приводит к модальному блоку (overlay/popup), который позволяет пользователю вводить свои учетные данные, а не чтобы посетить предопределенные страницы, созданные Devise.

Вы можете ознакомиться с приведенной ниже ссылкой, чтобы увидеть проект, над которым я сейчас работаю.

http://squilio.heroku.com/.

Попробуйте нажать кнопку «Войти». Я хотел бы получить здесь свою форму.

ответ

1

Я нашел элегантное решение из этой статьи ..

https://github.com/plataformatec/devise/wiki/How-To:-Display-a-custom-sign_in-form-anywhere-in-your-app

Это показывает, как мы можем добиться этого с помощью form_for и размещения в user_session_path

<%= form_for("user", :url => user_session_path) do |f| %> 
    <%= f.text_field :email %> 
    <%= f.password_field :password %> 
    <%= f.check_box :remember_me %> 
    <%= f.label :remember_me %> 
    <%= f.submit 'Sign in' %> 
    <%= link_to "Forgot your password?", new_password_path('user') %> 
<% end %> 
1

эпизод railscast, который вы видели, слишком стар (12 апреля 2010 г.), последняя версия Devise 2.0. поэтому я думаю, что некоторые из функций устарели.

За ваш вопрос: если вы хотите иметь 2 разных страницы (например, 1 - это диалог/всплывающее окно ajax, другое - обычная страница erb), вы должны реализовать 2 разных действия или, по крайней мере, вам нужно реализовать 2 различных стратегии для них. например

# will render app/views/.../regular_login.html.erb 
def regular_login 
end 

# render a dialog box only. 
def dialog_login 
    render :layout => false 
end