[英]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.