首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Ruby控制器在模型中设置实例变量值

用Ruby控制器在模型中设置实例变量值
EN

Stack Overflow用户
提问于 2016-11-22 05:53:37
回答 1查看 198关注 0票数 0

控制器中的签入值对于if o.my_method('a')来说是正确的,尽管当这种情况发生时,@var在模型中保持为零。我哪里错了,还是有更好的方法来做这件事?

主计长:

代码语言:javascript
复制
def action
  o = Object.new
  if o.my_method('a')
    ...
  end
end

型号:

代码语言:javascript
复制
class Object
  def my_method(args)
    ['a', 'b', 'c'].any? do |i|
      @var = true if args.include?(i)
    end
  end

  def my_method2
    if @var == true
      do stuff
    end
  end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-22 06:02:27

这里有一个清理过的代码版本,它实际上更像Ruby:

代码语言:javascript
复制
class MyModel
  attr_accessor :example

  VALID_VALUES = %w[ a b c ]

  def demo_method(value)
    @example = true if VALID_VALUES.include?(value)
  end
end

model = MyModel.new

model.demo_method('x')

model.example
# => nil

model.demo_method('a')

model.example
# => true

您在原始代码中遇到的问题是在any?块中设置值,该块还对包含进行了测试。这个筑巢不是必需的。

您也不需要测试x == true,因为x就足够了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40734710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档