2016-05-25 2 views
0

Метод указателей на контроллер рельсов читает сообщения. Однако, когда приложение запускается впервые, запрос на запись не существует, и она бросаетПравильно обрабатывается ошибка запроса на отправку

неопределенный метод `[]» для ноль: NilClass

Для учета этого состояния, я следующий блок кода. В принципе, если чтение запроса на отправку генерирует ошибку, оно устанавливает значение вручную.

begin 
    @business = params[:business_name] 
rescue 
    @business = ["Nestle"] 
end 

У меня такое чувство, что это плохой подход к решению этой проблемы. Что было бы лучше?

ответ

0
@business = !params.nil? ? (params[:business_name] || "Nestle") : "Nestle" 

Я задаюсь вопросом о том, как приложение ударяя метод контроллера без запроса от браузера. Обычно браузер выдает запрос GET для открытой страницы и этот запрос маршрутизируется на метод контроллера. Базовый unless request.post?, за которым следует блок для настройки значений по умолчанию для страницы, если ни один из них не был указан, является простым способом обработки запросов без POST для индексной страницы.

0

@business = !params[:business_name].nil? || ["Nestle"]

+0

Таким образом, это не работает, потому что вызов params [: business_name] вызывает ошибку, поэтому он никогда не попадает в часть ["Nestle"]. – HoosierCoder

+0

Это то, с чем у меня возникают проблемы .. кажется, я не могу просто проверить нуль, потому что, как только вы вызываете params [] на несуществующий параметр, он выдает ошибки – HoosierCoder

+0

Это странно, рельсы обычно возвращают nil если параметр не существует. – agustaf