重新呈现页面的路径是什么?

时间:2017-03-15 02:51:24

标签: ruby-on-rails forms routes

我有一个控制器操作:当输入错误信息导致表单重新渲染时。

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 %>

这很正常......问题是,如果用户输入的数据不正确,则会重新呈现登录表单并显示错误消息,然后会出现侧边栏,不应该出现。

非常感谢任何想法。

1 个答案:

答案 0 :(得分:1)

发生这种情况的原因是,当引发错误时,它会在控制器中呈现create操作,这与名为login_path的命名路由不同。

相反,请在视图中使用以下代码段:

<% unless params[:controller] == 'sessions' %>
  <%= render 'layouts/sidebar' %>
<% end %>

(显然将'sessions'更改为控制器的名称)。