我试图在模型中定义一个方法,以简化我在控制器中执行的操作,如下所示:
模型/ game.rb
def build_array_for(words)
words.downcase.split(",")
end
我在控制器中调用方法如下
games_controller.rb
@wordsArray = @game.build_array_for(red_words)
请注意' red_words'是Game实例的一个属性,该值应该是一个字符串
当我调用方法时,我得到:
未定义的局部变量或方法`red_words'对于GamesController
如果我将方法构建为:
def build_array
red_words.downcase.split(",")
end
它有效,但由于我将其与其他属性一起用于同一目的,因此无法理解。
我在这里缺少的是,参数是否作为字符串传递,并且由于某种原因无法识别属性的名称?
答案 0 :(得分:3)
如果您需要现有列的构建数组,那么您可以尝试:
def build_array_for(column)
self[column].downcase.split(",")
end
如果您想在以下情况下为任何实例变量构建数组:
def build_array_for(name)
self.send(name).downcase.split(",")
end
使用符号或字符串作为参数:
@wordsArray = @game.build_array_for(:red_words)
答案 1 :(得分:0)
将方法更改为
def build_array_for(words)
words.downcase.split(",")
end
当您使用self
rails时,会尝试为words
对象
words
或实例方法Game
修改强>
相应地进行此更改
<强> games_controller.rb 强>
@wordsArray = @game.build_array_for(red_words)
<强>模型/ game.rb 强>
def build_array(red_words)
red_words.downcase.split(",")
end