这似乎工作正常:
视图/ index.haml:
%form{:method => 'POST' :action => '/'}
%label{:for => 'name'} Name:
%input{:type => 'text, :value => @values[:name] || ""}
%input{:type => 'submit'}
app.rb:
post '/' do
@values = params
haml :review
end
视图/ review.rb
Hello #{params[:name]}!
但是,当我尝试将我的后期数据发送到不同网址上的同一视图时,我收到错误,或者换句话说:
app.rb:
post '/' do
@values = params
redirect '/review'
end
get '/review' do
@values = params
haml :review
end
数据未通过,但未引发错误。
如何跨这样的页面发送后期数据?理想情况下,我不想创建数据库。
答案 0 :(得分:7)
您可以将参数存储在会话中或明确指定查询字符串。 Browser Redirect from Sinatra Documentation
如文档中所述,您可以使用会话或将POST参数转换为查询字符串,并在redirect
方法中使用它。一个粗略的例子是:
假设'/'
块内的POST参数哈希是:
{
:name => "Whatever",
:address => "Wherever"
}
这个哈希可以像这样写成一个字符串:
query = params.map{|key, value| "#{key}=#{value}"}.join("&")
# The "query" string now is: "name=Whatever&address=Wherever"
现在在post '/' do
redirect to("/review?#{query}")