2012-04-19 70 views
0

我是Devise的粉丝,并且在我的许多Ruby on Rails应用程序中使用了Devise。Rails身份验证 - 自定义设计视图上的查询

我通常会按照下面的RailCasts安装和定制Devise。

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

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

视频告诉我们,如果我们想自定义的意见,我们需要运行下面的命令 -

rails generate devise:views 

这就造成对身份验证有关的意见apps/views/devise文件夹。我们可以定制外观和感觉。

我的问题是 - 我们如何允许多个视图登录?例如 - 我想允许用户能够通过点击导航栏上的登录按钮从根页面登录,导致一个模式框(叠加/弹出),允许用户输入他的登录凭证,而不是必须访问由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情节太旧了(2010年4月12日),最新的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