无法解析 ruby 请求参数哈希
Can't parse ruby request params hash
我正在 Ruby 中提交表格,想在提交前进行检查。
我可以在终端中看到参数散列,如下所示:
{"utf8"=>"✓", "_method"=>"patch", "email"=>"someone@gmail.com",...}
但例如 params[:email] 为空。
如何提取该值?
为了回应下面的第一个答案,在我的控制器中,我尝试了:
puts "params: #{params}"
puts "params email: #{params["email"]}"
puts "params email: #{params[:email]}"
puts "params email: #{params['email']}"
这是终端的响应:
params: {"utf8"=>"✓", "_method"=>"patch",
"authenticity_token"=>"FNkGQg9+HmhMssJQTLUr29fejDyF9QORcvG1BMonJ7l2vwaPejM6x+pjlua90NFsXNAJGg/MUZWl97jnmBlutg==",
"contact"=>{"name"=>"john smith", "phone"=>"",
"email"=>"someone@gail.com", "image_url"=>"", "website"=>"",
"location_info"=>"", "bio"=>"", "tag_ids"=>["", "Crypto", "home"],
"category_ids"=>[""]}, "commit"=>"Update Contact",
"controller"=>"contacts", "action"=>"update", "id"=>"1"} params email:
params email: params email:
电子邮件嵌套在 contact
哈希中。试试这个
params["contact"]["email"]
上一个答案
默认情况下,字符串和符号被视为不同的键。
irb(main):001:0> h = { email: "symbol", "email" => "string"}
=> {:email=>"symbol", "email"=>"string"}
irb(main):002:0> h[:email]
=> "symbol"
irb(main):003:0> h["email"]
=> "string"
irb(main):004:0> h
=> {:email=>"symbol", "email"=>"string"}
irb(main):005:0>
但是,在 Rails 中,params 散列应该支持无差别访问,但只是为了确保我会尝试以字符串形式访问密钥
params["email"]
https://api.rubyonrails.org/classes/ActiveSupport/HashWithIndifferentAccess.html
https://medium.com/@lcriswell/ruby-symbols-vs-strings-248842529fd9
我正在 Ruby 中提交表格,想在提交前进行检查。
我可以在终端中看到参数散列,如下所示:
{"utf8"=>"✓", "_method"=>"patch", "email"=>"someone@gmail.com",...}
但例如 params[:email] 为空。
如何提取该值?
为了回应下面的第一个答案,在我的控制器中,我尝试了:
puts "params: #{params}"
puts "params email: #{params["email"]}"
puts "params email: #{params[:email]}"
puts "params email: #{params['email']}"
这是终端的响应:
params: {"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"FNkGQg9+HmhMssJQTLUr29fejDyF9QORcvG1BMonJ7l2vwaPejM6x+pjlua90NFsXNAJGg/MUZWl97jnmBlutg==", "contact"=>{"name"=>"john smith", "phone"=>"", "email"=>"someone@gail.com", "image_url"=>"", "website"=>"", "location_info"=>"", "bio"=>"", "tag_ids"=>["", "Crypto", "home"], "category_ids"=>[""]}, "commit"=>"Update Contact", "controller"=>"contacts", "action"=>"update", "id"=>"1"} params email: params email: params email:
电子邮件嵌套在 contact
哈希中。试试这个
params["contact"]["email"]
上一个答案
默认情况下,字符串和符号被视为不同的键。
irb(main):001:0> h = { email: "symbol", "email" => "string"}
=> {:email=>"symbol", "email"=>"string"}
irb(main):002:0> h[:email]
=> "symbol"
irb(main):003:0> h["email"]
=> "string"
irb(main):004:0> h
=> {:email=>"symbol", "email"=>"string"}
irb(main):005:0>
但是,在 Rails 中,params 散列应该支持无差别访问,但只是为了确保我会尝试以字符串形式访问密钥
params["email"]
https://api.rubyonrails.org/classes/ActiveSupport/HashWithIndifferentAccess.html https://medium.com/@lcriswell/ruby-symbols-vs-strings-248842529fd9