【问题标题】:Sinatra and computed view nameSinatra 和计算视图名称
【发布时间】:2011-05-07 17:59:27
【问题描述】:

我是 Ruby 和 Sinatra 的新手,所以请原谅这个琐碎的问题:

我想计算视图名称,而不是仅仅传入一个符号。我希望相同的操作根据当前状态返回不同的视图。大概有 20 种不同的状态,所以设置一个好的命名约定可以让我很容易地将视图名称表示为一个字符串:

get "/page" do
  erb "page-#{session[:page]}"
end

当我这样做时,我得到的只是字符串而不是渲染视图。谁能向我解释我如何在 Sinatra 中做到这一点?

【问题讨论】:

  • sessoion?看起来不太对...
  • 这只是一个错字 - 我的代码中没有错字

标签: ruby sinatra


【解决方案1】:

我想说你可能正在寻找String#to_sym。我现在没有测试,但所有示例都说 erb 接收符号参数,而不是字符串 - 所以试试这个:

erb "page-#{session[:page]}".to_sym

或等效

erb :"page-#{session[:page]}"

【讨论】:

    【解决方案2】:

    如果您将字符串传递给erb,它会尝试直接呈现该字符串,而不是寻找具有相应名称的视图。将字符串转换为符号会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-21
      • 1970-01-01
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      相关资源
      最近更新 更多