ruby // 存在或无

ruby // present or nil

简单的例子:

val = (params[:page] ? params[:page] : nil)

只是不知道怎么命名,所以找不到更好的答案

我觉得这个例子有更简单的语法;想知道怎么写更好

你可以简单地做:

val = params[:page]

您正在使用三元运算符,这意味着

condition ? true do this : false do this

将以上应用到您的示例中:

params[:page] ? params[:page] : nil

在 Ruby 中,任何 return 值都被视为 truenilfalse 除外。所以在这里如果 params[:page] 有一个值(即条件 true)那么你正在分配 val 它的值。如果它是 nil,则您将 val 分配为 nil。所以最终你只是分配 val 任何值 params[:page] 有。因此 val = params[:page]

根据此逻辑,您的最新示例将简化为:

%body{data: {page: params[:page]}}

I need the attribute to be really nil; it would not be the case with only :

%body{data: {page: params[:page]}}

如果params[:page]没有值,默认为nil。所以你的假设是不正确的,除非 false.

您可以这样使用 ||

val = params[:page] || nil

如果 params[:page]nilfalseval 将是 nil。在所有其他情况下,它将是 params[:page].

的值