ruby-on-rails - 如何将我的 session[:user_id] 参数与表单输入参数一起传递给 rails 中的模型?
问题描述
我正在根据用户 ID 创建一个会话 ID。我想将此会话 ID 值与其他一些表单参数(即年龄、地址、性别)一起发送。我怎样才能做到这一点?
我可以这样做吗?
def details_params
params.require(:details).permit(:age, :address, :gender).merge(:session[:user_id])
end
控制器代码
class SessionsController < ApplicationController
def create
@present_users = User.new(token: login_params).get_login_credentials
@parsed_body = JSON.parse(@present_users, :symbolize_names => true) #parsing the json response.body i.e. ':' json to '=>' hash
if @parsed_body[:result].any?{|h| h[:id][-1]} #checking if user got registered or not
session[:user_id] = @parsed_body[:result][-1][:id] #assigining user id as session id
puts "The session id is: #{session[:user_id]}"
render 'show'
else
puts "Login Error! Check details and try again"
redirect_to '/', :notice => "Invalid id, username or password"
end
end
def createcard
@newdetails = User.new(token: details_params).get_my_card
puts "@newdetails is: #{@newdetails}"
puts "session id is: #{session[:user_id]}"
@mycard = JSON.parse(@newdetails, :symbolize_names => true)
puts "@mycard data is: #{@mycard}"
render 'createcard'
end
private
def login_params
params.require(:login).permit(:id, :username, :password)
end
def details_params
params.require(:details).permit(:age, :address, :gender).merge(:session[:user_id])
end
end
解决方案
这里:
params.require(:details).permit(:age, :address, :gender).merge(:session[:user_id])
.merge
想要一个hash
并且你正在传递一个值。尝试,而不是:
params.
require(:details).
permit(:age, :address, :gender).
merge({session_id: session[:user_id]})
这假设这session[:user_id]
是一些有意义的值。
推荐阅读
- python - 生成热图rgba值python
- node.js - NSIS nsExec路径问题可能
- rust - 当切片不为空时,为什么 Box::from_raw 使用指向切片数据的指针?
- algorithm - 数量再分配逻辑 - 具有外部数据集的 MapGroups
- php - 警告:gmp_add():无法将变量转换为 GMP - 类型错误
- javascript - 在页面调整大小时禁用 CSS 动画
- django - 在python中压缩波形文件
- javascript - 如何在 Vue.js 中将活动类添加到多个复选框?
- angular - Http.get 请求在与其他 api 示例一起正常工作时返回错误
- reactjs - 如何在 queryString url 中提取反应路由路径名?