У меня есть страница поиска в моем приложении, где есть форма поиска ajax. Форма поиска работает правильно, передавая параметры модели для фильтрации поиска, а модель возвращает коллекцию результатов. При поиске, на странице отображаются результаты @results. Каждый @result затем имеет ссылку на действие на нем, например:
<%=link_to "Message", message_user_path(:id => user.id), :remote => true%>
Если это действие в контроллере:
respond_to :js, :html
def message
@user_id = params[:id]
@user = User.find_by_id(@user_id)
respond_to do |format|
format.html
format.js
end
end
и это отвечает сообщением message.js.erb, которое запускает панель сообщений, чтобы вывести сообщение пользователю. Все это работает правильно, проверяя журнал, я вижу, что отправлен правильный запрос на получение, и обрабатываемый правильный формат:
Started GET "/users/3/message"
Processing by UsersController#message as JS
Однако, если я обновляю страницу и пытаюсь щелкнуть ту же самую ссылку, которая работала до этого, я получаю сообщение об ошибке "Шаблон отсутствует". Проверяя журнал, я вижу, что теперь отправлено два запроса, сначала html, затем тот же самый запрос js.
Started GET "/users/4/message"
Processing by StudentsController#message as HTML
...
Completed 406 Not Acceptable in 3ms (ActiveRecord: 1.0ms)
Started GET "/users/4/message"
Processing by StudentsController#message as JS
В запросе html возникает ошибка шаблона. Кто-нибудь знает, почему обновление страницы приводит к тому, что рельсы пытаются ответить html-запросом на удаленную ссылку?
EDIT: routes.rb
resources :students do
member do
get 'message'
end
end