【问题标题】:Devise Controller neglects '+' character设计控制器忽略“+”字符
【发布时间】:2025-12-18 17:15:02
【问题描述】:

我在设计注册控制器中编写了一个 API 来检查具有给定电子邮件 ID 的用户是否存在?

def check_user
  user = User.find_by_email(params[:email])
  if user
    render json: { success: true, status: 200} and return
  else
    render json: { success: false, status: 200} and return
  end
end

设计控制器以某种方式去除参数中的“+”字符。 即当我点击 /check_user?email=tester+12343@mailer.com 时,到达控制器的参数是 Parameters: {"email"=>"soorajs 12343@qburst.com"},这是由于任何错误的设计配置造成的吗?

【问题讨论】:

    标签: ruby-on-rails devise ruby-on-rails-4.2


    【解决方案1】:

    这不是设计,是轨道。 + 表示查询字符串中的编码空间。如果你想要文字加号,那么你应该将它编码为%2B

    或者,您可以使用 POST 请求并在请求正文中发送参数。那里不需要逃跑。虽然使用 POST 进行明显的查询是错误的。

    【讨论】: