Для управления ошибками в моем приложении адресной книги я инициализирую массив, подобный этому
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 '/' to get '/ add', и в результате получается пустой массив... Как я могу решить?спасибо всем!