我有一个带有一个输入字段的表单 - 一个textarea - 当用户提交表单时,我想将textarea的值保存到会话中。我如何在Rails中做到这一点?
我正在使用Devise,我提交表单后我发送给用户的页面是我的Devise注册页面。
所以我想在注册控制器操作中我需要这样的东西:
session[:text_entered] = params()
...但是Devise没有给我一个注册控制器。我需要制作一个吗?
表单提交后我是否坚持使用超长URL?这应该是POST还是GET?如何将textarea值传递给注册页面而不将其作为URL参数发送?
抱歉,我是新手。谢谢你的帮助!
答案 0 :(得分:1)
所以,你有一个textarea所在页面的控制器,我们称之为“SomethingsController”。并且该页面上提交的控制器是我收集的RegistrationsController。而不是在RegistrationsController中处理该表单的提交,我会做的是让SomethingsController处理它。
当你向SomethingsController POST
表单(是的,你应该发布POST)时,它将触发create
动作,你将从params
获得值(这是哈希 - 您使用[]
访问其值并将其放入session
。完成后,您可以将用户重定向到注册页面。像这样:
SomethingsController < ActionController::Base
def create
if text = params[:text_area_name] && text.present?
session[:text_entered] = text
redirect_to new_user_registration_path
else
flash[:error] = "You didn't enter any text!"
render :action => :new
end
end
end