#javascript #ruby-on-rails-5
#javascript #ruby-on-rails-5
Вопрос:
У меня следующая проблема:
На моей странице у меня есть 2 удаленные ссылки. Первый:
<p><%= link_to "Description", "#", remote: true, id: "desc-link" %></p>
это простая ссылка, чтобы скрыть описание объекта:
$(document).on "ready page:load", ->
$("section.object").on "click", "#desc-link", ->
$("#object-desc").fadeToggle()
Второй — вызов Ajax:
<a type="button" class="btn btn-default",
href='/users/<%= Object.find(object_to_display).user.id %>/objects',
data-remote="true" id='object-link'>Test</a>
и контроллер должен делать что-то, когда на него нажимают:
def objects
...
respond_to do |format|
format.html { render "users/show_objects" }
format.js { STUFF }
end
end
Моя проблема в том, что каждый раз, когда я использую первую ссылку для включения или выключения описания, также происходит то, чего не должно быть. Как я могу избежать возникновения проблем при нажатии на первую ссылку?
Ответ №1:
Первая ссылка не нужна remote: true
. Настройка, которая заставляет jquery_ujs пытаться автоматически отправлять ссылку через ajax при нажатии на нее. Удаление remote: true
должно предотвратить запуск objects
действия с помощью ссылки переключения.
Отдельно ваш click
обработчик должен либо вернуть false
, либо вызвать e.preventDefault()
, чтобы браузер не пытался перейти по ссылке (по сути, вы говорите браузеру «игнорируйте этот щелчок, я его обработал»):
$(document).on "ready page:load", ->
$("section.object").on "click", "#desc-link", (e) ->
$("#object-desc").fadeToggle()
e.preventDefault() // <-- prevents following the link