AJAX, Rails и динамическая загрузка форм
-
04-07-2019 - |
Вопрос
У меня есть приложение rails, которое набирает обороты, но у меня серьезная головная боль, с которой приходится сталкиваться. Это базовое приложение для управления активами - пользователи загружают свои фотографии, PDF-файлы, видео и т. Д., И система позволяет им управлять представлением этого актива.
Я начал с довольно стандартного представления rails - только то, что генерируется rails - для index.html.erb. У меня есть часть, которая отображает эскиз для каждого из активов и что-то вроде этого:
<div id="preview"> </div>
Я хочу, чтобы миниатюра была кликабельной (достаточно легкой), но когда пользователь нажмет эту кнопку, содержимое div будет заполнено, ну, по сути, edit.html.erb, но я предполагаю, это должно быть сделано как частичное. Я уже справился с этим с помощью прямого JavaScript.
У меня есть доступ к предварительной публикации новой книги «Agile Development on Rails», которую любой может получить через издателя, но глава об AJAX очень минимальна и предполагает больший опыт работы с этими вещами, чем у меня это мой первый набег на javascript и рельсы.
ОБНОВЛЕНИЕ: в ответ на вопрос "что за вопрос"? «ответ», хотя я думал, что это было довольно ясно:
Что мне нужно вставить в эскиз миниатюры, чтобы щелкнуть по нему, чтобы загрузить форму редактирования в div?
Решение
вам нужно использовать link_to_remote:
<%= link_to_remote image_tag('whatever.jpg'),
{:controller => 'something', :action => 'replace_thumbnail', :id => @thumbnail.id},
:update => 'preview' %>
и в контроллере вы должны выполнить это действие:
def replace_thumbnail
image = Image.find(params[:id])
render :partial => 'edit', :object => image, :layout => false
end
убедитесь, что ваш партиал называется _edit.html.erb