Ruby Params,为什么提取值需要双引号?
我正在深入了解Sinatra的登录过程 Login.erbRuby Params,为什么提取值需要双引号?,ruby,login,sinatra,Ruby,Login,Sinatra,我正在深入了解Sinatra的登录过程 Login.erb <div id="flash" class="failure"> <h2> <%= flash[:failure] %> </h2> </div> <a href="/welcome">Go Back</a> <% if @user.nil? == false %> <% if @user.errors.any? %>
<div id="flash" class="failure">
<h2> <%= flash[:failure] %> </h2>
</div>
<a href="/welcome">Go Back</a>
<% if @user.nil? == false %>
<% if @user.errors.any? %>
<%= erb 'shared/_error_messages'.to_sym %>
<form action="/users/signin" method="post">
<p> User Login</p>
<label> Email <input type="text" name="[:session][:email]"/> </label></br>
<label> Password <input type="password" name="[:session][:password]"/> </label></br>
<input type="submit" value="Log in">
</form>
<% end %>
<% else %>
<form action="/users/signin" method="post">
<p> User Login</p>
<label> Email <input type="text" name="[:session][:email]"/> </label></br>
<label> Password <input type="password" name="[:session][:password]"/> </label></br>
<input type="submit" value="Log in">
</form>
<% end %>
用户登录
电子邮件
密码
用户登录
电子邮件
密码
当我使用binding.pry来确定我们提交post请求时会发生什么时,我发现我将得到以下结果:
[1] pry(#<Sinatra::Application>)> params
{
":session" => {
":email" => "tasha@gmail.com",
":password" => "123"
}
}
[1]撬动(#)>参数
{
“:会话”=>{
“:电子邮件”=>”tasha@gmail.com",
“:密码”=>“123”
}
}
我知道我有一个带有键值对的散列
我想知道为什么我需要在括号中的符号周围加上引号,而不是让它单独提取值?还有,为什么我在没有双引号的情况下命名它,为什么在我请求pry中的参数时它会添加双引号
[2] pry(#<Sinatra::Application>)> params[:session]
nil
[3] pry(#<Sinatra::Application>)> params[":session"]
{
":email" => "tasha@gmail.com",
":password" => "123"
}
[4] pry(#<Sinatra::Application>)> params[:session][:email]
NoMethodError: undefined method `[]' for nil:NilClass
from (pry):31:in `block in <main>'
[5] pry(#<Sinatra::Application>)> params[":session"][":email"]
"tasha@gmail.com"
[6] pry(#<Sinatra::Application>)>
[2]pry(#)>params[:session]
无
[3] pry(#)>params[“:session”]
{
“:电子邮件”=>”tasha@gmail.com",
“:密码”=>“123”
}
[4] pry(#)>参数[:会话][:电子邮件]
NoMethodError:nil类的未定义方法“[]”
from(pry):31:in'block in'
[5] pry(#)>params[“:session”][“:email”]
"tasha@gmail.com"
[6] 撬动(#)>
注意当前参数散列中的键
params
{
":session" => {
":email" => "tasha@gmail.com",
":password" => "123"
}
}
您需要访问参数中定义的键。例如:“:session”
问题是哈希没有正确生成。请注意当前参数哈希中的键
params
{
":session" => {
":email" => "tasha@gmail.com",
":password" => "123"
}
}
您需要访问参数中定义的键。例如:“:session”
问题是哈希没有正确生成。请注意当前参数哈希中的键
params
{
":session" => {
":email" => "tasha@gmail.com",
":password" => "123"
}
}
您需要访问参数中定义的键。例如:“:session”
问题是哈希没有正确生成。请注意当前参数哈希中的键
params
{
":session" => {
":email" => "tasha@gmail.com",
":password" => "123"
}
}
您需要访问参数中定义的键。例如:“:session”
问题是没有正确生成哈希值。电子邮件的字段
name
是字符串[:session][:email]
,该字符串被解析为哈希值,带有字符串类型键:
{
":session" => {
":email" => value
}
}
这些字符串键以冒号开头。它们不是符号
而params[:session]
将从params[“session”]
中提取。这是因为符号的字符串版本不包括:
前缀
:session.to_s #=> "session"
您可能只希望在模板中包含此内容
name="[session][email]"
电子邮件的字段
name
是字符串[:session][:email]
,该字符串被解析为散列,带有字符串类型键:
{
":session" => {
":email" => value
}
}
这些字符串键以冒号开头。它们不是符号
而params[:session]
将从params[“session”]
中提取。这是因为符号的字符串版本不包括:
前缀
:session.to_s #=> "session"
您可能只希望在模板中包含此内容
name="[session][email]"
电子邮件的字段
name
是字符串[:session][:email]
,该字符串被解析为散列,带有字符串类型键:
{
":session" => {
":email" => value
}
}
这些字符串键以冒号开头。它们不是符号
而params[:session]
将从params[“session”]
中提取。这是因为符号的字符串版本不包括:
前缀
:session.to_s #=> "session"
您可能只希望在模板中包含此内容
name="[session][email]"
电子邮件的字段
name
是字符串[:session][:email]
,该字符串被解析为散列,带有字符串类型键:
{
":session" => {
":email" => value
}
}
这些字符串键以冒号开头。它们不是符号
而params[:session]
将从params[“session”]
中提取。这是因为符号的字符串版本不包括:
前缀
:session.to_s #=> "session"
您可能只希望在模板中包含此内容
name="[session][email]"
谢谢,我应该更改它的命名方式吗?是的,问题在于您在erb文件中添加的
:
前缀。请按照@AlexWayne的建议更新erb。这将解决不正确的密钥生成问题。谢谢,我是否应该更改命名方式?是的,问题在于您在erb文件中添加的:
前缀。请按照@AlexWayne的建议更新erb。这将解决不正确的密钥生成问题。谢谢,我是否应该更改命名方式?是的,问题在于您在erb文件中添加的:
前缀。请按照@AlexWayne的建议更新erb。这将解决不正确的密钥生成问题。谢谢,我是否应该更改命名方式?是的,问题在于您在erb文件中添加的:
前缀。请按照@AlexWayne的建议更新erb。这将解决不正确的密钥生成问题。谢谢!!我想知道。出于某种原因,我看到人们喜欢将冒号放在括号内,但我想这是不必要的。你应该仔细阅读ruby中的理解很重要。谢谢!!我想知道。出于某种原因,我看到人们喜欢将冒号放在括号内,但我想这是不必要的。你应该仔细阅读ruby中的理解很重要。谢谢!!我想知道。出于某种原因,我看到人们喜欢将冒号放在括号内,但我想这是不必要的。你应该仔细阅读ruby中的理解很重要。谢谢!!我想知道。出于某种原因,我看到人们喜欢将冒号放在括号内,但我想这是不必要的。你应该仔细阅读ruby中理解冒号的重要性。