#app/controllers/sessions_controller.rb
class SessionController < ApplicationController
def new
@session = Session.new
end
def fetch
#@user = User.session(params [:user])
redirect_to "http://www.google.com"
end
def create
emai = params[:email]
puts emai
user = User.find_by(:email => session[:emai])
#user = User.find_by (params [:email])
#user = User.find_by email: 'abc@xyz.com'
#user = User.find_by(params[:Email])
#if (session[:Email] = user.email)
if (user)
redirect_to "http://www.yahoo.com"
flash[:notice] = "You signed up successfully"
flash[:color]= "valid"
else
flash[:notice] = "Form is invalid"
flash[:color]= "invalid"
redirect_to "http://www.google.com"
end
#redirect_to "http://www.yahoo.com"
end
end
每次执行我的视图时,即使我传递参数,我也会被重定向到google.com。
由R Peck编辑:
如果设置了参数,我的逻辑应该将人们发送给雅虎,但仍然发送给Google,我该如何解决这个问题?
答案 0 :(得分:1)
尝试:
task.cancel(true);
如果您只是致电 user = User.find_by(:email => params[:sessions][:emai])
,那么在致电孩子params[:email]
之前,您应该先打电话给父母。
答案 1 :(得分:0)
您的代码有些问题。
以下是我写的内容:
#app/controllers/sessions_controller.rb
class SessionsController < ApplicationController
def new
@session = Session.new
end
def create
email = params[:sessions][:email]
user = User.find_by email: email
url = user ? "google" : "yahoo"
colour = user ? "valid" : "invalid"
notice = user ? "You signed up successfully" : "Your form is invalid"
redirect_to "http://#{url}.com", notice: notice, color: colour
end
private
def session_params
params.require(:session).permit(:session, :params)
end
end
<强> OOP 强>
我认为这可能有点先进,但无论如何我都会写它,为了我自己的利益。
Rails是object orientated(它建立在Ruby上,是一种OOP语言)。这意味着每次创建/调用控制器时,它都应该以对象为中心。
一个很好的例子就是Devise
controllers。
这有一个sessions_controller
,它基本上允许您CRUD (Create Read Update Destroy) 会话。这是使用控制器的正确方法。
您的实现似乎正在处理用户,而不是会话,因此您最好使用users_controller
来修复它:
#app/controllers/users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new
@user.save
end
end
话虽如此,您似乎可能会解决问题,以便您可以使用User
来构建新会话。
我想最好记住,你必须确保你能够欣赏到适合你应用的良好结构