Как отобразить частичное представление через контроллер при загрузке отдельного представления в Ruby на Rails?
Заранее спасибо за помощь
Проблема : у меня есть show.html.erb
для моего Patients
контроллера, когда он загружается, у меня есть ряд вкладок, одна из которых представляет собой список заметок, добавленных в эту запись пациента. Notes
это отдельная модель. Я хочу загрузить список заметок при загрузке show.html.erb
.
. Я могу использовать приведенный ниже код для прямой визуализации представления и таким образом передавать переменные, но я бы предпочел go через контроллер и доставить notes/_list.js.erb
через Patients Controller
.
<%= render "notes/list", :remote => true %>
У меня есть решение, которое загружает частичное с помощью link_to
, но, поскольку ссылка находится во вкладке, она ломает мою вкладку javascript, и он просто загрузит информацию о начальной загрузке страницы, а не заставит пользователя взаимодействовать с элементом.
<%= link_to "Notes".html_safe,{:controller => "patients", :action => "notes", :remote => true } %>
Это должно быть частично, так как я использую pagy
для разбивки результатов на страницы и если я отображаю его через зависимую от контроллера частичную функцию, тогда навигационные ссылки будут работать, как и ожидалось.
Соответствующие маршруты
get 'patients/:id/show' => 'patients#show', as: :show_patient
get 'patients/:id/notes' => 'patients#notes', as: :notes_patient
Соответствующий контроллер пациента
def notes
@pagy, @notes = pagy( Note.where(:patient_id => params[:id]).reverse_order, items: 2 )
respond_to do |format|
format.html { render "notes/list" }
format.js { render "notes/list" }
end
end
заметки / список. js .erb
$('#notes-list').html('<%= escape_javascript(render('notes/list')) %>');
заметки / _list. html .erb
<% @notes.each do |note| %>
<%= render partial: note %>
<% end %>
<%== pagy_materialize_nav(@pagy) %>
<span class="pagy-info"><%== pagy_info(@pagy) %></span>