Ruby on rails初学者在这里。我一直在尝试为我的垒球队创建一个网络应用程序,它在比赛开始前24小时发出短信,上面写着“你打算参加比赛吗?”团队回复“y或n”并在数据库中更新。
我还在学习,所以我尝试做的第一件事就是尝试从数据库中提取有关每个游戏的信息并将其发送到twilio。
def voice
response = Twilio::TwiML::Response.new do |r|
r.Say "Our next game will be at #{game.start_at}.", :voice => 'alice'
#r.Play 'http://linode.rabasa.com/cantina.mp3'
end
render_twiml response
end
我从view / index.html.erb
中撤出#{game.start_at}
然而,我收到此错误:
Game Load (0.5ms) SELECT "games".* FROM "games" LIMIT 1
Completed 500 Internal Server Error in 34ms
NameError (undefined local variable or method `game' for #<TwilioController:0x007f7594530f00>):
我使用了这个脚手架命令。并使用表单创建了一个新的游戏条目。
rails generate scaffold games start_at:datetime ...
有人能指出我正确的方向吗。
答案 0 :(得分:2)
视图不允许您访问本地变量。必须从控制器提供数据。
例如,
控制器/ game_controller.rb
def something
@my_variable = "Hello World"
my_variable = "Something else"
end
视图/游戏/ something.html.erb
#{my_variable} <<- This gives error
#{@my_variable} <<- This is good!
总结一下,
#{game.start_at} should have been #{@game.start_at}
和 @game 。在你的情况下,那将是
def index
@game = ...
end
某个控制器的。