ear*_*art 10 ruby get params sinatra
我需要用Sinatra制作一些看起来像的方法:
访问http //:本地主机:1234 /添加string_to_add
但是当我宣布它是这样的:
get "/add?:string_to_add" do
...
end
Run Code Online (Sandbox Code Playgroud)
它没有看到string_to_add参数.
我应该如何声明我的方法并使用此参数来使事情有效?
mat*_*att 18
在URL中,问号将路径部分与查询部分分开.查询部分通常由名称/值对组成,并且通常由Web浏览器构造,以匹配用户输入表单的数据.例如,网址可能如下所示:
http://example.com/submit?name=John&age=93
Run Code Online (Sandbox Code Playgroud)
这里的路径部分/submit和查询部分是name=John&age=93指键的值"John" name,而"93"表示age.
当你创建一个路由在西纳特拉,仅指定路径部分.然后Sinatra解析查询,并使对象中的数据可用params.在这个例子中,你可以这样做:
get '/submit' do
name = params[:name]
age = params[:age]
# use name and age variables
...
end
Run Code Online (Sandbox Code Playgroud)
如果?在定义Sinatra路径时使用字符,则会使url的一部分成为可选项.在您使用(get "/add?:string_to_add")的示例中,它实际上将匹配任何开头的url /ad,然后可选地匹配另一个url ,然后将其他d任何内容放入:string_to_addparams散列的键中,并且将分别解析查询部分.换句话说,问号使前面的d字符可选.
如果要在Sinatra中获取查询字符串的"原始"文本,可以使用query_string该request对象的方法.在您的示例中,看起来像这样:
get '/add' do
string_to_add = request.query_string
...
end
Run Code Online (Sandbox Code Playgroud)
请注意,路线不包括?角色,只包括基础/add.
| 归档时间: |
|
| 查看次数: |
7746 次 |
| 最近记录: |