При отправке формы в Синатре у меня появляется следующая ошибка:
App 40327 output: 2018-06-28 02:59:17 - NoMethodError - undefined method `[]' for nil:NilClass:
App 40327 output: /Library/WebServer/Documents/blammo/routes/publish.rb:87:in `block in <class:MyApp>'
Форма представляет собой форму загрузки файла и одно текстовое поле. Просто. Файл проходит, как и текстовое поле. Они оба захвачены просто отлично.
Я отправляю params
методу, который в конечном итоге отвечает за генерацию ошибки в следующей строке внизу страницы:
fname = params[:s_single_file_upload][:filename]
Рассматриваемый метод возвращает штрафа с логическим значением. Я переписал это несколькими способами и выбросил все, что могло бы сбить с толку то, что я
незнакомый с
Таким образом, params
испорчен, если вызывается упомянутый выше метод. Таким образом, имя не может быть назначено. Я ожидаю, что params
будет целым
на данный момент в коде. Есть ли какое-нибудь разрушение, если params
внимательно изучены до этого момента? На другом языке я видел params
уничтоженным
так или иначе по какой-то причине, но я не уверен насчет Ruby
.
Я не нахожу nil: NilClass, но это именно то, что он сообщает. Вот триггер этого метода:
result = Alpha::rf_alpha_sniff(params)
и модуль :: метод:
module Alpha
def self.rf_alpha_sniff(incoming)
qualifiers = %w(alpha bravo charlie delta echo foxtrot)
incoming.delete('captures')
incoming.delete('splat') # take out Mustermann's 'captures' and 'splat'
incoming.delete('s_single_file_upload') # non-perusal 'single_file_upload'
incoming.values.each do |item|
item = item.gsub(" ","_")
Dev::hq_log("item: #{ qualifiers.include?(item.downcase) }")
return true if qualifiers.include?(item.downcase)
end
return false
end
end
Таким образом, страница прогрессирует нормально без этого метода. Когда метод вызывается каким-либо образом, params
, кажется, облажался, так что файл в значительной степени
ушел.
Как этот метод взаимодействует с params
, так что он недоступен в дальнейшем по сценарию? Я ожидаю, что это будет полностью доступно везде.