Ruby - неявное преобразование false в строку - PullRequest
0 голосов
/ 30 октября 2019

Я получаю следующую ошибку с кодом, описанным ниже. «неявное преобразование false в строку»

  def search_form(target, search)
    raw("<span class='no_print'>" <<
            form_tag('/' + target + '/', :method => :get) <<
            text_field_tag(:search, search) <<
            submit_tag('Search', data: { disable_with: "Searching..." }) <<
            !search.nil? ? link_to('Clear', root_path, class: 'clearingLink') : "" <<
            '</form>' <<
            '</span>' <<
            form_focus('search'))
  end

!search.nil? ? link_to('Clear', root_path, class: 'clearingLink') : "" <<
This is the line I have added recently. Can anyone please let me know what is the wrong with this ?

1 Ответ

3 голосов
/ 30 октября 2019

"str" << false - минимальный пример ошибки, с которой вы столкнулись. Ошибка является результатом недопонимания, связанного с приоритетом оператора. Примечательно, что ?: имеет более низкий приоритет, чем <<;поэтому

a << b ? c : d << e

(где b - ваш !search.nil?) оценивается как

(a << b) ? c : (d << e)

, в то время как вы надеялись, что оно будет оцениваться как

a << (b ? c : d) << e

Решение:добавьте скобки, чтобы обеспечить желаемый порядок оценки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...