首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从sessions#create直接手动登录

无法从sessions#create直接手动登录
EN

Stack Overflow用户
提问于 2014-07-25 19:30:40
回答 1查看 31关注 0票数 0

运行Ruby1.9.3p545 rails 4.1.4我有一个应用程序,用户可以通过facebook、twitter等登录,并且可以手动重新登录。我想对那些已经手动注册的人进行登录处理。路由是获得'auth/:provider/callback',到:'sessions#create‘

代码语言:javascript
复制
     get 'auth/failure', to: redirect('/')

     get 'signout', to: 'sessions#destroy', as: 'signout'

     get "sign_up" => "profiles#new", :as => "sign_up"

     get "log_in" => "logins#new"

     post "log_in" => "logins#login"

除了手动日志外,一切正常。logins.new提供一个表单ok,但后续提交总是在create的会话控制器中结束。我定义了一个登录控制器,并试图在路由中使用上面的post,以使其远离sessions#create中的无所不在的进程。登录表单是

登录

代码语言:javascript
复制
    <%= form_tag sessions_path do %>
   <p>
    <%= label_tag :email %><br />
    <%= text_field_tag :email, params[:email] %>
   </p>
   <p>
   <%= label_tag :password %><br />
   <%= password_field_tag :password %>
  </p>
  <p class="button">
  <%= submit_tag "Sign in" %>
  </p>
  <% end %>

logins#login是

代码语言:javascript
复制
 def login

    authorized_user = Profile.authenticate(params[:name_or_email],params[:password])

   if authorized_user

     flash[:notice] = "Wow Welcome again, you logged in as #{authorized_user.username}"

     redirect_to(:action => 'home')

   else

     flash[:notice] = "Invalid Username or Password"

     flash[:color]= "invalid"

    render "login"  

   end

我是否可以将登录表单的提交指示远离会话控制器?谢谢提前结束

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-25 19:38:25

线

代码语言:javascript
复制
<%= form_tag sessions_path do %>

就是扔东西的东西。它将表单发布到sessions_path。尝试用<%= form_tag log_in_path do %>替换它,或者更好的是,用<%= form_tag "" do %>替换它,因为默认的做法是将其发送到与当前页面相同的URL中。

一些进一步的澄清:

代码语言:javascript
复制
<%= form_tag sessions_path do %>

生成以下HTML (粗略地说,跳过一些与此问题无关的细节):

代码语言:javascript
复制
<form action="/sessions" method="post">

因为/sessions是通向sessions#create的路径。您希望action/log_in,即logins#login的路径,因此您希望更改要传递给form_tag的参数。

由于您已经在页面log_in上,如果您将操作保留为空白,即:

代码语言:javascript
复制
<form method="post">

因为浏览器的默认行为是将文章发布到相同的页面上,因此它将使您在想要的地方找到自己的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24963203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档