我有以下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,所以我想避免运行另一种服务器类型,如果涉及更多的工作,但这总是一个选项!
答案 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