我正在使用Sinatra,我在邮件请求中收到带有html / erb表单的餐馆订单(项目,数量,table_number)的参数。这一切都很精彩......
get '/mainpage' do
@time = Time.new.strftime("%B %e, %Y")
erb :mainpage
end
post '/mainpage' do
table_number = params[:table_number].to_i
item = params[:item]
quantity = params[:quantity].to_i
@order = "#{table_number}...#{item}... #{quantity}"
redirect to('/mainpage')
end
当我希望在'mainpage'get请求中使@order变量可用时出现问题,因此我的html / erb页面可以像这样使用它:
<section class ="table-order">
<%= @order %>
</section>
我将如何做到这一点?
答案 0 :(得分:1)
如果@order
实际上只是一个字符串而不是更复杂的对象,则可以使用URL参数来执行此操作。例如:
get '/mainpage' do
@time = Time.new.strftime("%B %e, %Y")
@order = params[:order] if params[:order]
erb :mainpage
end
post '/mainpage' do
table_number = params[:table_number].to_i
item = params[:item]
quantity = params[:quantity].to_i
order = "#{table_number}...#{item}... #{quantity}"
redirect to("/mainpage?order=#{order}")
end
如果您的@order
是一个更复杂的对象,或者您需要它来保留多个重定向,请考虑使用会话来存储它。像这样:
get '/mainpage' do
@time = Time.new.strftime("%B %e, %Y")
@order = session[:order] if session[:order]
erb :mainpage
end
post '/mainpage' do
table_number = params[:table_number].to_i
item = params[:item]
quantity = params[:quantity].to_i
session[:order] = "#{table_number}...#{item}... #{quantity}"
redirect to('/mainpage')
end
有关生成网址和使用会话的详情,请参阅Sinatra's docs。