Я пытаюсь заставить этот вложенный оператор if работать, но мой синтаксис неверен, и я не могу понять это. У меня есть окно поиска в приложении Rails 4 и раскрывающемся списке сортировки. На странице результатов поиска я хочу сортировать списки товаров на основе того, что пользователь выбирает в раскрывающемся списке сортировки. Если пользователь не вводит поисковый запрос, я хочу, чтобы сообщение отображалось. Вот мой код контроллера.Ruby - синтаксис оператора вложенного IF
Если я удаляю условия и просто показываю сортировку по умолчанию, страница результатов поиска отображается нормально, поэтому ошибка содержится в синтаксисе оператора if.
def search
if params[:search].present?
if params[:sort] == "- Price - Low to High"
@listings = ...
elsif params[:sort] == "- Price - High to Low"
@listings = ...
elsif params[:sort] == "- New Arrivals"
@listings = ...
elsif params[:sort] == "- Random Shuffle"
@listings = ...
else
@listings = ...
end
else
flash[:notice] = "Please enter one or more search terms e.g. blue shirt."
end
end
Каково точное поведение кода? Всегда ли уведомление всегда отображается? – Undo
Слишком много прикованных 'elsif'. Похоже, вы могли бы сильно использовать «переключатель», который существует в Ruby в форме 'case' /' when': http://stackoverflow.com/questions/948135/how-can-i-write-a- switch-statement-in-ruby –
Вы проверяете, что: поиск присутствует, но затем «переключение» на: sort. Правильно ли это поведение? –