0

我有一个应用视图(索引页面),如果用户从该视图应用,用户可以留下他的凭据,将生成一个帐户,用户将登录。将显示一个概述页面(创建页面)

但是,如果他已经登录并应用了“我们已将您的密码发送到...”这句话,则无法在我的视图中显示。

所以我做了以下几点:

  <% 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 信息已填写,但只有在生成这部分视图后才能登录。

在我的 applycontroller create 中,我有以下要做的 priv_sign_in:

 # Helpers
  helper_method :priv_sign_in

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

有没有更好的办法是。所以为了让事情更清楚。

当我进入创建视图时,必须这样做:

如果用户已登录 --> 隐藏部分视图 如果用户未登录 --> 显示部分视图并尝试登录

有不清楚的地方请教一些问题,万分感谢!:)

4

1 回答 1

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 %>
于 2013-04-12T13:53:53.933 回答