【问题标题】:Ruby on Rails - Submitting Form Data Directly to a Session VariableRuby on Rails - 将表单数据直接提交到会话变量
【发布时间】:2012-02-15 17:32:12
【问题描述】:

我花了几个小时试图找到一个资源来解释将表单数据直接提交到会话变量的过程,但我没有找到任何东西!

本质上,当用户以这种特定形式提交时,我不想将数据存储在数据库中,我只想在用户提交表单时将其分配给session[:member_pin] 变量,这样我就可以检查是否他们输入的 pin 与成员数据库记录上的 pin 匹配。

如果您需要进一步说明我正在尝试做的事情,请告诉我,非常感谢您的帮助!

【问题讨论】:

  • 为什么需要在会话中存储任何内容?只需在提交时验证 pin…
  • 哦!我什至不知道你能做到这一点……那个动作会是什么样子?
  • session[:verified] = User.find_by_pin(params[:pin]).present?
  • 这不是根据当前用户的 pin 检查提交的 pin ...这只是检查该 pin 是否存在于任何用户下的数据库中...知道如何指定这个相同sn-p 到当前用户?

标签: ruby-on-rails ruby-on-rails-3 session


【解决方案1】:

您不必每次提交表单时都将数据保存到数据库中。在您的控制器操作中,获取您想要的参数并将它们存储在会话中。例如,

def some_action
  session[:user_id] = User.find_by_pin(params[:pin]) if params[:pin]
end

然后在您的应用程序控制器中,创建一个像这样的辅助方法。然后您应该能够在您的视图中访问“current_user”方法。 (如果您没有使用 pin 验证任何用户,它将为零。

def current_user
  User.find(session[:user_id]) if session[:user_id].present?
end

【讨论】:

  • 如何设置我的form_for
  • 刚刚更新了答案。请再检查一次。我猜,表单只需要在文本字段中提交“pin”。
【解决方案2】:

在你的控制器方法中可能是这样的:

session[:member_pin] = params[:member_pin_input_name]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-06
    • 1970-01-01
    • 2011-07-24
    • 2017-07-04
    • 2016-08-18
    • 2021-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多