是否可以使用Sinatra提供html或php文件,并能够处理url变量?

时间:2014-08-01 22:03:36

标签: ruby sinatra

我有以下ruby sinatra代码,我试图提供一个动态页面,我想发送URL变量,例如生成一个特定于user_id的页面。

值得注意的是,页面的自定义完全在javascript中发生,因此页面可以是html。

get '/page/:user_id' do
    File.read(File.join('dynamic_pages', "page.html"))
end

我相信sinatra无法托管php所以我一直在尝试使用javascript捕获和解析的html URL变量,但我无法想象sinatra托管和解析url变量

这只是服务上的一个小页面,主要是一个sinatra API,所以我想避免运行另一种服务器类型,如果涉及更多的工作,但这总是一个选项!

1 个答案:

答案 0 :(得分:0)

你的帖子对我来说真的没有意义,但是这里有:

  

html网址变量

没有这样的事情。网址与html无关。

  

我无法解析url变量的解析。

冒号名称在params hash中可用:

get '/page/:user_id' do
    user_id = params[:user_id]
    ...
end

对评论的回应:

get '/page/:user_id' do
    user_id = params[:user_id]

    redirect to(
      "page.html?userid=#{user_id}"
    )
end

默认情况下,Sinatra将在your_app_dir/public目录中查找该页面。然后,html页面上的javascript可以获取查询字符串并解析出变量,例如:

  <script>
    var query_str = location.search.substr(1);
    var i = 0;
    var names_values = query_str.split('&');
    var len = names_values.length

    for (i = 0; i < len; ++i) {
      var name_value = names_values[i].split('=');
      console.log(name_value[0] + " => " + name_value[1]);
    }

  </script>

--console output:--
userid => 1
color => red