Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails If、else动态语句逻辑_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails If、else动态语句逻辑

Ruby on rails If、else动态语句逻辑,ruby-on-rails,ruby,Ruby On Rails,Ruby,有人能解释一下这个代码背后的逻辑吗?(顺便说一句,这是正确的代码) 欢迎 你好你的名字叫什么? 我的直觉是写以下内容: <% if @request.query.inspect['first_name'].empty? %> Hi! What is your name? <% else %> Welcome! <%= @request.query.inspect['first_name'] %> <% end %>

有人能解释一下这个代码背后的逻辑吗?(顺便说一句,这是正确的代码)


欢迎
你好你的名字叫什么?
我的直觉是写以下内容:

<% if @request.query.inspect['first_name'].empty? %> 
    Hi! What is your name? 
  <% else %> 
    Welcome! <%= @request.query.inspect['first_name'] %>
<% end %>

你好你的名字叫什么?
欢迎
我正在尝试建立一个用户表单,当没有输入时,表单上方的文本会显示“嗨!你叫什么名字?”当有输入时,表单会显示一条消息,说“欢迎!*用户名*”


第一段代码对我来说并不直观,第二段代码更有意义。。关于如何理解代码有什么建议吗?

您需要先检查它是否为零,然后才能检查它是否为空,因为您正在检查


您需要先检查它是否为零,然后才能检查它是否为空,因为您正在检查


您需要先检查它是否为零,然后才能检查它是否为空,因为您正在检查


您需要先检查它是否为零,然后才能检查它是否为空,因为您正在检查


通过将nil转换为空字符串,可以避免if语句中的第一个条件。我不知道你是不是想这么做,但你几乎做到了

首先,您不应该在散列中调用
inspect
,因为它会将整个内容转换为一个“复杂”字符串。您要做的只是将
first\u name
选项中的值转换,因为在这种情况下,如果名称存在,它仍然是相同的,如果不存在,它将转换为
“nil”

其次,这里的方法
inspect
不是最佳选择,因为返回的字符串永远不会为空,因为
nil.inspect=>“nil”
。您应该使用的是方法
to\u s
,它在应用于nil时的行为如下:
nil.to\u s=>“”

最后,您可以将代码更新为:

<% if @request.query['first_name'].to_s.empty? %> 
  Hi! What is your name? 
<% else %> 
  Welcome! <%= @request.query['first_name'] %>
<% end %>

你好你的名字叫什么?
欢迎

通过将nil转换为空字符串,可以避免if语句中的第一个条件。我不知道你是不是想这么做,但你几乎做到了

首先,您不应该在散列中调用
inspect
,因为它会将整个内容转换为一个“复杂”字符串。您要做的只是将
first\u name
选项中的值转换,因为在这种情况下,如果名称存在,它仍然是相同的,如果不存在,它将转换为
“nil”

其次,这里的方法
inspect
不是最佳选择,因为返回的字符串永远不会为空,因为
nil.inspect=>“nil”
。您应该使用的是方法
to\u s
,它在应用于nil时的行为如下:
nil.to\u s=>“”

最后,您可以将代码更新为:

<% if @request.query['first_name'].to_s.empty? %> 
  Hi! What is your name? 
<% else %> 
  Welcome! <%= @request.query['first_name'] %>
<% end %>

你好你的名字叫什么?
欢迎

通过将nil转换为空字符串,可以避免if语句中的第一个条件。我不知道你是不是想这么做,但你几乎做到了

首先,您不应该在散列中调用
inspect
,因为它会将整个内容转换为一个“复杂”字符串。您要做的只是将
first\u name
选项中的值转换,因为在这种情况下,如果名称存在,它仍然是相同的,如果不存在,它将转换为
“nil”

其次,这里的方法
inspect
不是最佳选择,因为返回的字符串永远不会为空,因为
nil.inspect=>“nil”
。您应该使用的是方法
to\u s
,它在应用于nil时的行为如下:
nil.to\u s=>“”

最后,您可以将代码更新为:

<% if @request.query['first_name'].to_s.empty? %> 
  Hi! What is your name? 
<% else %> 
  Welcome! <%= @request.query['first_name'] %>
<% end %>

你好你的名字叫什么?
欢迎

通过将nil转换为空字符串,可以避免if语句中的第一个条件。我不知道你是不是想这么做,但你几乎做到了

首先,您不应该在散列中调用
inspect
,因为它会将整个内容转换为一个“复杂”字符串。您要做的只是将
first\u name
选项中的值转换,因为在这种情况下,如果名称存在,它仍然是相同的,如果不存在,它将转换为
“nil”

其次,这里的方法
inspect
不是最佳选择,因为返回的字符串永远不会为空,因为
nil.inspect=>“nil”
。您应该使用的是方法
to\u s
,它在应用于nil时的行为如下:
nil.to\u s=>“”

最后,您可以将代码更新为:

<% if @request.query['first_name'].to_s.empty? %> 
  Hi! What is your name? 
<% else %> 
  Welcome! <%= @request.query['first_name'] %>
<% end %>

你好你的名字叫什么?
欢迎

代码检查哈希键是否存在,然后检查哈希值是否存在。此操作可通过以下方式在一次检查中完成:

@request.query.try(:[], 'first_name').empty?

代码检查哈希键是否存在,然后检查哈希值是否存在。此操作可通过以下方式在一次检查中完成:

@request.query.try(:[], 'first_name').empty?

代码检查哈希键是否存在,然后检查哈希值是否存在。此操作可通过以下方式在一次检查中完成:

@request.query.try(:[], 'first_name').empty?

代码检查哈希键是否存在,然后检查哈希值是否存在。此操作可通过以下方式在一次检查中完成:

@request.query.try(:[], 'first_name').empty?

你的直觉是正确的,尽管你需要一个替代
空?
。Rails添加了一些您可以使用的不同方法:

blank?
如果接收者是
nil
、空数组、字符串或散列,或者只有空格的字符串,则返回true

present?
如果
blank?
为false,则返回true。所以你的情况可能是:

<% if @request.query['first_name'].present? %>
  Welcome...

你的直觉是正确的,尽管你需要一个替代
空?
。Rails添加了一些您可以使用的不同方法:

blank?
如果接收者是
nil
、空数组、字符串或散列,或者只有空格的字符串,则返回true

present?
返回