簡體   English   中英

如何在Ruby中用if語句一行設置變量?

[英]How can I set variables in Ruby with an if statement on one line?

使用Ruby,如何根據條件設置變量? 就像是:

dog_name = params[:dog][:name] if params[:dog]

然后,如果未設置params [:dog],就不會設置dog_name。

現在,如果params [:dog]為nil,我將收到一個錯誤消息。

您可以使用&&運算符:

dog_name = params[:dog] && params[:dog][:name]

因此,如果params[:dog]不存在,則dog_name將為nil ,否則它將為params[:dog][:name]

您正在做的事情應該可以工作。

我想象params[:dog]實際上不是nil。 我敢打賭,這是一個空字符串(或空哈希)。 (您可以通過將params [:dog] .inspect輸出到日志或stdout進行檢查。)

Rails是否有方法blank? 測試nil,空字符串,空集合。

嘗試:

dog_name = params[:dog][:name] if !params[:dog].blank?

要么:

dog_name = params[:dog][:name] unless params[:dog].blank?

您還可以使用&& =運算符:

dog_name = params.has_key(:dog)
dog_name &&= params[:dog].has_key(:name)
dog_name &&= params[:dog][:name]

怎么樣:

dog_name = params[:dog][:name] if params.has_key?(:dog) && params[:dog].has_key(:name)

當params [:dog]為零時,您會遇到什么錯誤?

您如何嘗試:

dog_name = params[:dog][:name] unless params[:dog].nil?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM