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

时间:2014-04-17 05:38:37

标签: ruby-on-rails ruby undefined

通常的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 个答案:

答案 0 :(得分:1)

尝试这样做

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

UPD:您甚至不需要? : - 运营商