我是Ruby和Sinatra的新手,所以请原谅这个微不足道的问题:
我想计算视图名称而不是仅仅传入符号。我希望相同的操作根据当前状态返回不同的视图。有20个不同的状态,所以提出一个好的命名约定允许我很容易地将视图名称表示为字符串:
get "/page" do
erb "page-#{session[:page]}"
end
当我这样做时,我得到的只是字符串而不是渲染的视图。任何人都可以向我解释我如何在Sinatra中做到这一点?
答案 0 :(得分:4)
我说你可能正在寻找String#to_sym
。我现在没有测试,但是所有的例子都说erb
收到一个符号参数,而不是一个字符串 - 所以试试这个:
erb "page-#{session[:page]}".to_sym
或等效
erb :"page-#{session[:page]}"
答案 1 :(得分:1)
如果将字符串传递给erb
,它会尝试直接呈现该字符串,而不是寻找具有相应名称的视图。将字符串转换为符号将有所帮助。