登录表单未启动用户会话



我在我的 Rails 应用程序中使用 Devise 和 Bootstrap

在引导导航栏中,我有以下登录表单:

<form class="navbar-form pull-right">
    <% if current_user %>
        <b><%= link_to current_user.name, current_user %></b>
        <%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
    <% else %>  
        <input class="span2" type="text" placeholder="Email">
        <input class="span2" type="password" placeholder="Password">
        <button type="submit" class="btn"><%= link_to "Sign in", new_user_session_path %></button>
        <button type="submit" class="btn"><%= link_to "Register", new_user_registration_path %></button>
    <% end %>
</form>

如果我输入电子邮件/通行证并点击"登录",则页面会刷新,但用户会话不会启动(用户尚未登录)。我以这种形式做错了什么吗?

我可以使用 Devise /sign_in 页面登录,但我希望能够在我的导航栏中执行此操作:)

您的表单没有发布到任何东西,那些link_to标签实际上没有任何作用。链接与输入不同。

相反,您需要这样的表单:

<% if current_user %>
   <%= link_to "Sign out", destroy_user_session_path, :method => :delete %>
<% else %>  
   <%= form_for("user", :url => new_user_session_path, :html => { :class => "navbar-form pull-right"}) do |f|%>
     <%= f.text_field :email, :class=>"span2"%>
     <%= f.text_field :password, :class=>"span2"%>
     <%= f.submit "Sign in", :class => "btn"%>
   <% end %>
   <%= link_to "Register", new_user_registration_path, :class => "btn" %>
<% end %>

您需要一个单独的注册表格,我建议简单地链接到另一个注册页面。

最新更新