5

这似乎工作正常:

意见/index.haml:

%form{:method => 'POST' :action => '/'}
  %label{:for => 'name'} Name:
    %input{:type => 'text, :value => @values[:name] || ""}
  %input{:type => 'submit'}

应用程序.rb:

post '/' do
  @values = params
  haml :review
end

意见/评论.rb

Hello #{params[:name]}!

但是,当我尝试将我的发布数据发送到不同 URL 上的同一视图时,我收到错误,或者换句话说:

应用程序.rb:

post '/' do
  @values = params
  redirect '/review'
end

get '/review' do
  @values = params
  haml :review
end

数据没有通过,但没有引发错误。

如何在这样的页面之间发送发布数据?理想情况下,我不想创建数据库。

4

1 回答 1

7

您可以将参数存储在会话中或显式指定查询字符串。来自 Sinatra 文档的浏览器重定向

如文档中所述,您可以使用会话或将 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}")
于 2012-09-26T03:57:40.340 回答