У меня есть система флеш-карт, которая позволяет пользователям создавать и проходить набор карточек. Я в настоящее время реорганизую его, чтобы сделать его более эффективным, но я столкнулся с аналогичной проблемой, с которой я был раньше. Предоставление кнопок через Javscript заставляет кнопки больше не нажимать, если Javascript не перезагружен. Вместо того, чтобы иметь 500 страниц Javascript, работающих в фоновом режиме, я изменил его, поэтому мне он больше не нужен. Однако мои пути передают параметры текущей карты контроллеру. Однако, поскольку я больше не создаю кнопки через JS, кнопки передают параметр в качестве исходной карты при загрузке страницы.Использование Javascript для изменения параметров, переданных в пути rails
<%= link_to ">", flashcard_path(type: "next", old: @card.id, status: @is_read), remote: true, class: "btn" %>
Как я могу обновить @ card.id без повторного рендеринга кнопку целиком? Я открыт для предложений, если мне тоже нужно сменить кучу вещей. Я уверен, что я делаю это странным образом, так я так и делаю. :)
Это javascript, который повторно отображает флэш-карту и метод сопровождающего контроллера.
$('#id_number').html("<%= @card_num %>");
$('#flashcard-title').html("<%= escape_javascript(@card.title) %>");
$('#flashcard-lines').html("<%= escape_javascript(render partial: 'flashcard_lines', :locals => { card: @card, is_read: @read }) %>");
$('#flashcard-body').html("<%= escape_javascript(@card.body) %>");
def flashcard
all = FlashCard.all
old_flashcard = FlashCard.find(params[:old].to_i)
old_index = FlashCard.all.index(old_flashcard)
case params[:type]
when "new"
@card = FlashCard.new
@card.save
@read = false
when "edit"
@card = old_flashcard
@read = false
when "next"
if old_index == all.length - 1
back = 0
else
back = old_index + 1
end
binding.pry
@card = all[back]
@read = true
when "back"
if old_index == 0
back = all.length - 1
else
back = old_index - 1
end
@card = all[back]
@read = true
when "save"
old_flashcard.save
@card = old_flashcard
@read = true
when "delete"
old_flashcard.destroy
@card = FlashCard.all.last
else
@card = FlashCard.find(0)
@read = true
end
if params[:status]
@read = params[:status]
end
@card_num = FlashCard.all.index(@card) + 1
respond_to do |format|
format.html
format.js
end
end
Можете ли вы разместить свой javascript? –
Не так много Javascript с тех пор, как я взял большинство из них, но я отредактирую сообщение с Javascript, который запускается как ответ от контроллера. – Rockster160