2013-04-12 2 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

Смежные вопросы