0

我有一个显示所有客户的视图。我有一个支持这种观点的客户模型。模型中有一种方法可以将属性从“”更改为个人首字母“jh”。这是方法。

def print(item, attribute)
  value = item.send(attribute)
  if(value.blank?)
    item.send(attribute + '=', "jh")
  else
    item.send(attribute + '=', "")
  end
end

当我从控制台运行此代码时,它运行良好。当我在应用程序中尝试时,没有任何变化。我得到了我期望的正确“值”,但它永远不会变成空字符串。我确定我在这里遗漏了一些简单的东西,但请帮忙。谢谢。

4

1 回答 1

1

我看不出这段代码有任何问题,我在普通的 ruby​​ 对象和 ActiveRecord 模型上都尝试了它,并且都按预期工作。所以我怀疑发生了一些特定于你的代码的有趣的事情。

在任何情况下,我都建议您不要通过字符串连接构造一个 setter,而应该使用 Ruby 的 native instance_variable_set

def print(item, attribute)
  value = item.send(attribute)
  if(value.blank?)
    item.instance_variable_set("@#{attribute}", "jh")
  else
    item.instance_variable_set("@#{attribute}", "")
  end
end

此方法的一个警告是,如果以前不存在实例变量,它将创建一个实例变量。

于 2012-10-15T23:58:57.240 回答