2011-09-24 55 views
1

我有一个表单有一个输入字段 - 一个textarea - 当用户提交表单时,我想将textarea的值保存到会话中。我如何在Rails中做到这一点?如何将textarea值保存到Rails会话中?

我正在使用设计,我发送用户提交表单后的页面是我的设计注册页面。

所以我想我需要在注册控制器动作是这样的:

session[:text_entered] = params() 

...但设计不给我一个注册控制器。我需要制作一个吗?

当表单被提交时,我坚持使用超长URL吗?这应该是POST还是GET?如何将textarea的值传递给注册页面而不将其作为URL参数发送?

对不起,我是一名新手。谢谢你的帮助!

+0

textarea页面的控制器是什么样的? –

回答

1

所以,你有一个textarea所在页面的控制器,我们称之为“SomethingsController”。并且该页面上的表单提交给的控制器是,我收集RegistrationsController。而不是处理在RegistrationsController中提交该表单,我要做的就是让SomethingsController处理它。

当你POST形式SomethingsController(是的,你应该张贴),它会触发create行动,在那里你会从params获得的价值(这是一个Hash - 你[]访问它的值)并把它放在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 
+0

我不得不删除“&& text.present?”部分,但完全奏效,你解释得很好。谢谢! – throwaway