Обновление до Rails 5 из 4 заставило ransack search_form_for выбросить NoMethodError - PullRequest
0 голосов
/ 17 октября 2019

В представлении индекса модели Survey имеется поисковая форма, в которой вы можете фильтровать результаты по нескольким атрибутам - после обновления до рельсов 5 эта форма выдает ошибку. Ранее, Ransack был версии 1.7.0, так как его обновление 2.3.0

Я упростил форму поиска до одного атрибута name , который определенно есть в модели. Документы Ransack показывают именно такую ​​форму поиска в качестве примера, и я не могу найти никаких проблем, связанных с этим. Я попытался изменить _cont на один из других вариантов предложения рансака (_matches, _eq), с похожим результатом.

<%= search_form_for @q do |f| %>
  <%= f.label :name_cont %>
  <%= f.search_field :name_cont %>
  <%= f.submit %>
<% end %>

Я ожидаю, что форма появится, поэтому я могу что-то напечатать там. Вместо этого я получаю следующее:

undefined method `name_cont' for Ransack::Search<class: Survey, base:
 Grouping <combinator: and>>:Ransack::Search

1 Ответ

0 голосов
/ 23 октября 2019

Оказалось, что это была проблема с глобализацией, например, этот другой вопрос: Поиск в Ransack и переводы - Я хотел бы оставить этот вопрос здесь, потому что это было определенно не очевидно, что происходило.

По сути, имя - это столбец при опросе, но это поле также переводится, и после обновления рельсов глобализация теперь игнорирует переведенные столбцы. Что мне действительно нужно:

<%= f.search_field 'translations_name_cont' %>

Что, я думаю, приближает меня к возможности удалять переведенные столбцы из модели ?

...