【问题标题】:How can I simplify my nested sinatra routes?如何简化嵌套的 sinatra 路线?
【发布时间】:2010-06-07 23:46:28
【问题描述】:

我需要在我的 sinatra 应用程序中嵌套子目录,我该如何简化这个重复的代码?

# ------------- SUB1 --------------
get "/:theme/:sub1/?" do
    haml :"pages/#{params[:theme]}/#{params[:sub1]}/index"
end

# ------------- SUB2 --------------
get "/:theme/:sub1/:sub2/?" do
    haml :"pages/#{params[:theme]}/#{params[:sub1]}/#{params[:sub2]}/index"
end

# ------------- SUB3 --------------
get "/:theme/:sub1/:sub2/:sub3/?" do
    haml :"pages/#{params[:theme]}/#{params[:sub1]}/#{params[:sub2]}/#{params[:sub3]}/index"
end

# ------------- SUB4 --------------
get "/:theme/:sub1/:sub2/:sub3/:sub4/?" do
    haml :"pages/#{params[:theme]}/#{params[:sub1]}/#{params[:sub2]}/#{params[:sub3]}/#{params[:sub4]}/index"
end

【问题讨论】:

    标签: ruby routing sinatra


    【解决方案1】:

    你可以使用splat参数:

    get "/:theme/*/?" do
      haml "pages/#{params[:theme]}/#{params[:splat].to_s}/index".to_sym  
    end
    

    【讨论】:

    • 谢谢!虽然应该是haml : "
    • to_sym 方法会将字符串转换为符号。我已经更新了答案。
    猜你喜欢
    • 1970-01-01
    • 2021-08-27
    • 2013-08-17
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-02
    相关资源
    最近更新 更多