【问题标题】:How do I save a textarea value to a Rails session?如何将 textarea 值保存到 Rails 会话?
【发布时间】:2011-09-24 05:33:07
【问题描述】:

我有一个带有一个输入字段的表单——一个文本区域——当用户提交表单时,我想将文本区域的值保存到会话中。在 Rails 中我该怎么做?

我正在使用 Devise,在用户提交表单后我发送给他们的页面是我的 Devise 注册页面。

所以我想我在注册控制器操作中需要这样的东西:

session[:text_entered] = params()

...但是 Devise 没有给我注册控制器。我需要制作一个吗?

提交表单时,我是否被一个超长的 URL 卡住了?这应该是 POST 还是 GET?如何将 textarea 值传递到注册页面而不将其作为 URL 参数发送?

对不起,我是新手。感谢您的帮助!

【问题讨论】:

  • textarea 所在页面的控制器是什么样的?

标签: ruby-on-rails devise


【解决方案1】:

所以,你有一个用于文本区域所在页面的控制器,我们称之为“SomethingsController”。我收集到,该页面上的表单提交给的控制器是 RegistrationsController。我不会在 RegistrationsController 中处理该表单的提交,而是让 SomethingsController 处理它。

当您将表单POST 发送到SomethingsController(是的,您应该发布)时,它将触发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

【讨论】:

  • 我必须删除“&& text.present?”部分,但这完全有效,你解释得很好。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 2013-08-27
  • 2020-04-23
  • 1970-01-01
  • 2015-10-31
相关资源
最近更新 更多