Ruby on rails 操作后登录
我有一个RubyonRails的博客项目 我想允许用户在未登录的情况下留下消息,但在创建消息后,我希望他登录或注册 其想法如下,用户单击“创建消息”,然后填写消息表单,然后单击“保存消息”,如果用户未登录,则重定向到登录/注册表单,在登录后,系统应确定我们有此用户的消息,使用正确的user.id保存消息Ruby on rails 操作后登录,ruby-on-rails,login,Ruby On Rails,Login,我有一个RubyonRails的博客项目 我想允许用户在未登录的情况下留下消息,但在创建消息后,我希望他登录或注册 其想法如下,用户单击“创建消息”,然后填写消息表单,然后单击“保存消息”,如果用户未登录,则重定向到登录/注册表单,在登录后,系统应确定我们有此用户的消息,使用正确的user.id保存消息 我知道这是一种非常标准的技术,如果你知道一些好的模式,我会很高兴的。Desive不允许在身份验证时发送POST参数,因此你需要通过GET发送消息参数,因此在这里,由于应用了过滤器,用户将在单击“
我知道这是一种非常标准的技术,如果你知道一些好的模式,我会很高兴的。Desive不允许在身份验证时发送
POST
参数,因此你需要通过GET
发送消息参数,因此在这里,由于应用了过滤器,用户将在单击“保存消息”时重定向到登录页面,这是一个演示
class MessagesController < ApplicationController
before_filter :authenticate_user!, :except => [:new]
def new
@message = Message.new
end
def get_message
@message = Message.new(params[:message])
@message.save
end
end
在创建操作中,应区分1)已知用户和2)未知用户。在第二种情况下,您应该在会话中存储所创建消息的id,然后重定向到登录/注册页面:
session[:message] = @message.id
redirect_to new_user_session_path
下一步是干扰注册控制器的创建操作(用户在重定向后注册)和会话控制器的创建操作(用户在重定向后登录)
在这两个控制器中,您可以添加如下内容
after_filter :assign_pending_message, only: :create
与
如果你需要更多的细节,请告诉我 点击“创建消息”按钮后,用户将被重定向到注册或注册页面?如果单击“创建消息”后我出错,请纠正我。用户将填写消息表单,但单击“保存消息”后,用户将重定向到登录/注册表单,然后消息将使用user.id保存
after_filter :assign_pending_message, only: :create
def assign_pending_information_request
# User succesfully created?
return unless @user.id
if session[:message]
if Message.exists?(id: session[:message])
message = Message.find(session[:message])
message.user = @user
message.save!
end
session.delete(:message)
end
end