gpt4 book ai didi

ruby - sinatra中的错误数组

转载 作者:行者123 更新时间:2023-12-03 09:00:09 24 4
gpt4 key购买 nike

为了管理我的通讯录应用程序中的错误,我初始化了一个像这样的数组

err = Array.new

然后当我发布一些东西时,它检查是否有空字段。如果是,则为每个空字段在数组中添加一条记录,然后重定向到/add页面,如下所示
post '/' do
if params[:fname] == ""
err.push "Insert a valid first name"
end
if params[:lname] == ""
err.push "insert a valid last name"
end
if params[:phone] == ""
err.push "insert a valid phone number"
end
if params[:mail] == ""
err.push "insert a valid e-mail address"
end
if err.empty?
c = Contatto.new
c.fname = params[:fname]
c.lname = params[:lname]
c.phone = params[:phone]
c.mail = params[:mail]
c.save
redirect '/'
else
redirect '/add'
end
end

然后添加页面读取数组是否有任何记录,如果是,则循环打印每个消息
get '/add' do
@err = err
@title = 'Aggiungi'
erb :aggiungi
end



<% if @err.any? %>
<div class="error">
<% @err.each do |err| %>
<%= err %><br>
<% end %>
</div>
<% end %>

我认为错误是它每次从post'/'更改为'/add'时都会重新初始化数组,因此结果是一个空数组...
我该如何解决?谢谢大家!

最佳答案

如果希望特定访问者的数据在请求之间持久存在,则需要将错误数组存储在 session 或cookie中( session 可能是最有意义的)。

幸运的是,在Sinatra中的 session 非常简单:http://www.sinatrarb.com/intro#Using%20Sessions。启用后,您几乎可以将所需的任何内容放入 session 哈希中,因此,使用session[:errors] = []进行初始化并使用session[:errors] << "An error"进行推送应该可以为您提供所需的持久性。

关于ruby - sinatra中的错误数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8259030/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com