如何传递可能未定义的变量

Posted

技术标签:

【中文标题】如何传递可能未定义的变量【英文标题】:How To Pass Possibly Undefined Variables 【发布时间】:2014-06-01 06:25:43 【问题描述】:

通常的 rails 粘性表单功能不起作用。注册时默认选中三个复选框。以下是它的haml代码。

= check_box_tag "subscription[news]", "news", ((!defined? params[:subscription][:news]) || (defined?(params[:subscription][:news]) && params[:subscription][:news]=='news') ? true : false)
= check_box_tag "subscription[recipes]", "recipes", ((!defined? params[:subscription][:recipes]) || (defined?(params[:subscription][:recipes]) && params[:subscription][:recipes]=='recipes') ? true : false)
= check_box_tag "subscription[exclusive]", "exclusive", ((!defined? params[:subscription][:exclusive]) || (defined?(params[:subscription][:exclusive]) && params[:subscription][:exclusive]=='exclusive') ? true : false)

每个条件的第一部分是用于页面加载,需要选中三个复选框。如果它被重新加载并且我们想要粘性,我们查看or 条件的另一面。 似乎有一种方法可以在帮助程序中编写一个函数来处理这三个条件中的每一个。有没有办法将未定义的 var 传递给函数? defined? 在做吗?我找不到该函数的声明。

下面的函数是我想要实现的,但如果大多数时候,参数在传递时没有定义,我不知道该怎么做。

def default_checked_sticky_form(param, value)
  ((!defined? param) || (defined?(param) && param==value) ? true : false)
end

【问题讨论】:

【参考方案1】:

尝试这样做

params[:subscription] && params[:subscription][:news]
&& params[:subscription][:news]=='news'

UPD:你甚至不需要? :-operator

【讨论】:

以上是关于如何传递可能未定义的变量的主要内容,如果未能解决你的问题,请参考以下文章

CodeIgniter,消息:未定义的变量,传递数据

手动传递的 Angular 路由变量在组件中未定义

使用 AJAX 刷新 Rails 部分时的未定义方法

在 Laravel 5.1 中传递数据控制器以查看获取未定义的变量

Vue.js 变量在传递给另一个组件后未定义

如何像未定义的函数一样传递未定义的方法