0

すべての顧客を表示するビューがあります。このビューをサポートする Customer モデルがあります。モデルには、属性を "" から人のイニシャル "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 モデルの両方で試してみたところ、両方とも期待どおりに動作しました。したがって、コードに固有の何かおかしなことが起こっているのではないかと思います。

いずれにせよ、文字列の連結によってセッターを構築するのではなく、Ruby のネイティブを使用することをお勧めします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

このメソッドの 1 つの注意点は、インスタンス変数が存在しない場合、インスタンス変数が作成されることです。

于 2012-10-15T23:58:57.240 に答える