2013-04-12 66 views
0

我有一個應用視圖(索引頁面),如果用戶在該視圖中應用時可以保留其憑據,則會生成一個帳戶,用戶將登錄。顯示(創建頁面)Rails在顯示視圖後登錄用戶

但是,如果他已經登錄並應用了一句「我們有您的密碼發送到......不能在我的視圖中顯示

所以我做了以下內容:

<% unless user_signed_in? %> 
    <div class="row"> 
     <div class="three columns"> 
     <strong><%= t("apply.create.labels.password") %></strong>: 
     </div> 
     <div class="nine columns"> 
     <%= t("apply.create.labels.emailed_password_html", :link => mail_to(@user.personal_info.e_mail))%> 
     <%= link_to(t("apply.create.labels.choose_password"), user_profile_path) %> 
     </div> 
    </div> 
    <!-- Try to Sign in User --> 
    <% priv_sign_in %> 
    <% end %> 

此代碼是因爲如果用戶將@user應用於fo被填入,但只有在生成這部分視圖後才能登錄。

在我applycontroller創建我有以下做priv_sign_in:

# Helpers 
    helper_method :priv_sign_in 

    # Sign in User from View 
    private 
    def priv_sign_in 
    sign_in(@user) 
    end 

有沒有什麼更好的辦法做的是。所以努力使事情更清楚。

當我進入創建視圖這有許多工作要做:

如果用戶登錄 - 來看 >隱藏一部分。如果用戶沒有登錄 - >顯示的視圖部分,並嘗試登錄

如果不明確,請提出一些問題,非常感謝! :)

回答

1

你不應該在你的意見中處理這麼多的邏輯。

控制器:

@was_signed_in = user_signed_in? 
sign_in(@user) unless @was_signed_in 

查看:

<% unless @was_signed_in %> 
    <div class="row"> 
    <div class="three columns"> 
    <strong><%= t("apply.create.labels.password") %></strong>: 
    </div> 
    <div class="nine columns"> 
    <%= t("apply.create.labels.emailed_password_html", :link => mail_to(@user.personal_info.e_mail))%> 
    <%= link_to(t("apply.create.labels.choose_password"), user_profile_path) %> 
    </div> 
</div> 
<% end %> 
+0

這個工作的輝煌!這給了我想要的東西。我謝謝你 ! :) – Vinozio