我有一个控制器操作:当输入错误信息导致表单重新渲染时。
def create
@user = User.new(user_params)
if @user.save
log_in @user
flash[:success] = "You have successfully created your account"
redirect_to app_path
else
render 'new'
end
end
我还有一个侧边栏,使用条件语句不会在登录页面上显示...
<% if current_page?(login_path)
<% else %>
<%= render 'layouts/sidebar' %>
<% end %>
这很正常......问题是,如果用户输入的数据不正确,则会重新呈现登录表单并显示错误消息,然后会出现侧边栏,不应该出现。
非常感谢任何想法。
答案 0 :(得分:1)
发生这种情况的原因是,当引发错误时,它会在控制器中呈现create
操作,这与名为login_path
的命名路由不同。
相反,请在视图中使用以下代码段:
<% unless params[:controller] == 'sessions' %>
<%= render 'layouts/sidebar' %>
<% end %>
(显然将'sessions'更改为控制器的名称)。