[英]In Rails, how can I get a string from a boolean?
我正在使用 Rails 5。我看到很多關於從字符串中獲取 boolean 的帖子,但我想 go 反向路徑。 我想知道是否有比這更優雅的方式......
my_boolean_value ? "true" : "false"
您可以使用to_s
將true
或false
轉換為字符串。 但是,如果您的值與nil
不同,您只需要這樣做。 .nil?
方法將返回 true 或 false(如果變量為 nil 或不是)。 感嘆號否定斷言。 在這種情況下,如果它不是 nil,則將調用to_s
方法。
my_boolean_value.to_s if !my_boolean_value.nil?
您可以使用my_boolean_value.to_s
。 基本上它將布爾值轉換為字符串。
你也可以做"#{my_boolean_value}"
注意:如果my_boolean_value
可以是.nil?
或除true/false
之外的任何其他內容,那么您在問題中的解決方案是最好和最簡單的方法。 如果您不想使用三元運算符,也可以使用以下方式,
(.!my_boolean_value).to_s
但是我仍然認為從可讀性和可維護性的角度來看,您應該使用問題中給出的解決方案。 原因是,如果您不發表評論,您正在做雙重否定可能會令人困惑。
嘗試
ActiveRecord::Type::Boolean.new.type_cast_from_user(my_boolean_value).to_s
更優雅的方式? 沒有。更實用的方法? 也許。
# in app/helpers/application_helper.rb
module ApplicationHelper
def boolean_label_for(value)
BooleanLabel.to_s(value)
end
end
# in lib/boolean_label.rb
class BooleanLabel
def self.to_s(value)
new(value).to_s
end
def initialize(value)
@value = value
end
def to_s
if @value
"true"
elsif @value.nil?
"i am nil — false"
elsif @value
"false"
end
end
end
它並不過分性感,你可以說它不必要地復雜,但如果你發現自己經常執行這個檢查,你應該把它干掉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.