Я очень смущен о каком-то тернарном выражении в рубине.akward trernary оценка в ruby
У меня есть это выражение:
puts respond_to? "greeting".to_sym ? "hello" : "bye"
конечно, что это не то, что я делаю в моем приложении, как раз для вас, чтобы увидеть.
вещь в том, что приведенное выше выражение возвращает
false
, когда оно должно быть возвращение hello
если метод существует и bye
, если это не так ли?
если я изменить выражение
puts respond_to?("greeting".to_sym) ? "hello" : "bye"
возвращает правильную вещь, либо «привет», если она существует, и «до свидания» в противном случае.
Почему это происходит? Есть что-то о тройном выражении в рубине, которого я не знаю?
Просто, чтобы вы знаете правильный код в моем приложении является:
respond_to?(path.to_sym) ? self.send(path) : "#"
Который возвращает правильный путь для БД хранятся меню заголовка и, если он не существует, то он будет просто положить «# «чтобы избежать ошибок.