我在'app.rb'文件中有这个帮助器,用于获取当前用户对象。
helpers do
def get_current_user(column, value)
user = User.where(column => value).first
return user
end
end
get '/' do
user = get_current_user(:id, params[:id])
end
这就是我在irb中所做的:
irb(main):001:0> require './app'
=> true
irb(main):007:0> user = get_current_user(:id, 2)
NoMethodError: undefined method `get_current_user' for main:Object
from (irb):7
from /usr/bin/irb:12:in `<main>'
我不明白为什么我无法从irb访问辅助方法。我应该明确包括帮助者或什么?如果是这样,为什么?因为我把它们放在同一个文件下,在同一个类下。
答案 0 :(得分:0)
get_current_users
通过helpers
方法进行元编程,成为App的实例方法。所以,如果app.rb
看起来像这样:
require 'sinatra/base'
class App < Sinatra::Base
helpers do
def get_current_user
puts "here!"
end
end
end
...然后从irb你可以在这样的App实例上调用get_current_user
:
>> require './app'
>> App.new!.get_current_user
here!
=> nil
>>
(如果您想知道为什么new!
而不是new
喜欢大多数理智的红宝石代码,请阅读this answer。)