use*_*730 2 html ruby forms checkbox sinatra
这是我的表格:
<form action="/results" method="post" name="checkbox_form">
<input type="checkbox" name="item" value="Bacon">Bacon (1 lb., sliced)<br>
<input type="checkbox" name="item" value="Eggs (dozen)">Eggs (1 dozen)
<input type="submit" value="Calculate">
</form>
Run Code Online (Sandbox Code Playgroud)
如果用户选中"培根"和"鸡蛋(1打)"框,我如何使用Sinatra和/或Sequel返回此数组:
["Bacon","Eggs (dozen)"]
Run Code Online (Sandbox Code Playgroud)
如您所见,数组元素是表单的"值"元素.
作为一个侧面问题:Sinatra如何处理复选框表格?我在Sinatra手册中找不到任何好的信息.
您实际上不需要Sequel来接收post请求中的项目.续集是一个数据库,因此您可以在从您的数据库收到后将其保存到数据库中post.因此,在这种情况下,您实际上并不需要它来返回数组.
此外,表格和复选框不是特定于西纳特拉,但有特定的HTML.
当您将表单作为post请求提交时,它会被发送回服务器和Sinatra,在那里可以处理它.Sinatra提供了一种params方法,其中包含已提交表单值的哈希值.
在下面的示例中,我使用特殊语法(item[])item在params哈希中提供名为数组的值.例如,这是params散列返回的选项{"item"=>["Bacon", "Eggs (dozen)"]},同时选中了两个复选框.
require 'sinatra'
get '/results' do
erb :results
end
post '/results' do
params[:item].inspect
end
__END__
@@ results
<form action="/results" method="post" name="checkbox_form">
<input type="checkbox" name="item[]" value="Bacon">Bacon (1 lb., sliced)<br/>
<input type="checkbox" name="item[]" value="Eggs (dozen)">Eggs (1 dozen)<br/>
<input type="submit" value="Calculate"/>
</form>
Run Code Online (Sandbox Code Playgroud)
该get块从用户的浏览器接收get请求并处理它.在此示例中,它将HTML表单返回给用户.
该post块在提交表单后从用户的浏览器接收发布请求.向用户显示来自服务器的响应,在这种情况下,该响应是复选框值的数组.
| 归档时间: |
|
| 查看次数: |
1906 次 |
| 最近记录: |