0

我是 Devise 的粉丝,并且在我的许多 Ruby on Rails 应用程序中都使用了 Devise。

我通常按​​照下面的 RailCast 来安装和自定义 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/

尝试单击登录按钮。我想在这里有我的登录表格。

4

2 回答 2

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 %>
于 2012-04-19T07:48:42.463 回答
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 
于 2012-04-19T06:24:26.997 回答