我有一个应用视图(索引页面),如果用户可以从该视图应用将生成一个用户将登录的帐户,则用户可以保留其凭据。并将显示一个概述页面(创建页面)< / p>
但如果他已登录并应用“我们已将密码发送给...的句子”,则无法在我的视图中显示。
所以我做了以下事情:
<% 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创建中,我有以下做priv_sign_in:
# Helpers
helper_method :priv_sign_in
# Sign in User from View
private
def priv_sign_in
sign_in(@user)
end
还有更好的方法吗?所以努力让事情变得更加清晰。
当我进入创建视图时,必须完成此操作:
如果用户已登录 - &gt;隐藏视图的一部分 如果用户未登录 - &gt;显示部分视图并尝试登录
如果不清楚,请提出一些问题,非常感谢! :)
答案 0 :(得分: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 %>