Честно говоря, отключение защиты от подделки не является плохой идеей, если вы ограничиваете это только JS.
def index
respond_to |format| do
format.html
format.js do
# your autocomplete code
end
end
end
Выполните автозаполнение вызова /things.js вместо /things.
Насколько я понимаю, защита от подделки не требуется для ответов JS, и обеспечение вашей автозаполнения методом GET также должно решить вашу проблему. Вы отображаете список, вы не изменяете состояние, поэтому используйте GET и ответ js.