2012-04-19 48 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