【问题标题】:Sinatra helper with setter带二传手的 Sinatra 助手
【发布时间】:2011-12-23 19:13:40
【问题描述】:

我不理解 Sinatra 中的助手一定有一些东西,但想知道为什么这不起作用:

helpers do
  def session_access_token
   p "GETTING: #{@app_id}_#{@page_id}"
   session["access_token_#{@app_id}_#{@page_id}"]
  end

  def session_access_token=(v)
    p "Setting: #{@app_id}_#{@page_id} access token to: #{v}"
    session["access_token_#{@app_id}_#{@page_id}"] = v
  end
end

然后,在这样的动作中:

get '/' do
 session_access_token = 'foo'
 p session_access_token
end

我没有看到被调用(似乎它正在创建一个新的局部变量)。也就是说,当我在其他操作中调用 'session_access_token' 时,我确实看到调用了 getter。

任何建议将不胜感激。

【问题讨论】:

  • 如果我将其更改为名为“set_session_access_token”的方法并调用它,而不是“session_access_token”,则可以。也许助手不允许您定义/使用这样的方法?

标签: ruby sinatra


【解决方案1】:

Sinatra issue 中所述:something = something_else 永远不会转换为 Ruby 中的方法调用。你必须写self.something = something_else

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    相关资源
    最近更新 更多