Как обновить запись Rails ActiveDirectory в частичной форме? - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь визуализировать частичную форму, чтобы заменить одну строку таблицы как способ отредактировать объект ActiveRecord и затем сохранить его на месте.Форма отображается правильно, но когда я нажимаю кнопку «Обновить объект», ничего не происходит.Мое лучшее предположение состоит в том, что я не точно отображаю частичное в контексте моего объекта.Кто-нибудь может помочь?

Я пытался изменить способ ссылки на объект в javascript, который вызывает частичное для каждой итерации, о которой я могу думать, и от rails нет ответа.

примечание - это очень похоже на эту проблему ( Rails - визуализация части редактирования в другой части ), но никто не ответил на этот вопрос.Я новичок в переполнении стека и не могу высказать эту проблему, поэтому я создаю вопрос с надеждой на то, что на него ответят.Я застрял на этом в течение нескольких дней!

Моя программа - система отслеживания времени.Каждый «трекер» - это отдельная задача, которая была сделана в течение дня.Все трекеры отображаются в таблице, и я хочу иметь возможность их редактировать.

  1. индексная страница, на которой трекеры отображаются в таблице:
<table id="trackers">
  <thead>
    <tr>
      <th>Day</th>
      <th>Task</th>
      <th>Subtask</th>
      <th>Description</th>
      <th>Hours</th>
      <th>Start time</th>
      <th>End time</th>
      <th>Payment</th>
      <th colspan="2"></th>
    </tr>
  </thead>
  <tbody>
    <% @trackers.each do |tracker| %>
      <tr id=<%=tracker.id%>>
        <td><%= tracker.date.strftime("%a #{tracker.date.day.ordinalize}") %></td>
        <td><%= tracker.task %></td>
        <td><%= tracker.subtask_1 %></td>
        <td><%= tracker.subtask_2 %></td>
        <td><%= tracker.hours %></td>
        <td><%= tracker.start_time.strftime("%H:%M") %></td>
        <td><%= tracker.end_time.strftime("%H:%M") %></td>
        <td><%= tracker.payment %></td>
        <td><%= link_to "Edit", edit_track_path(:id => tracker.id), :remote => true %>
        <td><%= link_to 'Destroy', tracker, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>
Когда нажата кнопка «Изменить», она проходит по этому маршруту:
 get "/edit_track" => 'trackers#edit_track', as: 'edit_track'
Этот путь живет в контроллере трекеров:
def edit_track
  @tracker = Tracker.find(params[:id])
  respond_to do |format|
    format.js
  end
end
В модели трекеров я создал файл с именем edit_track.js.erb.Этот файл вызывается командой format.js в методе контроллера.
$("#<%=@tracker.id%>").html("<%=j render partial: 'trackers/edit', :locals => {:tracker=>@tracker}%>");
В модели трекеров я создал файл с именем _edit.html.erb.Это моя частичная форма.
<%= form_for @tracker, :url=>tracker_update_path, method: :post do |form|%>
  <td>
    ...input fields for form
  </td>
  <td><%=form.submit %></td>
<% end %>
Form.submit: предполагается для перехода к маршруту tracker_update, который определяется следующим образом:
get '/tracker_update', to: 'trackers#update_tracker', as: 'tracker_update'

Но в серверном терминале rails ничего не отображается, поэтомуЯ не думаю, что это работает.

А вот метод update_tracker в контроллере трекеров:
def update_tracker
  @tracker.update(tracker_params)
end

'tracker_params' определяется в приватном методе в контроллере трекеров:

def tracker_params
  params.require(:tracker).permit(:date, :task, :subtask_1, :subtask_2, :hours, :start_time, :end_time, :payment, :month)
end

Кнопка form.submit в частичной форме должна обновить объект ActiveRecord новыми полями, которые были указаны в частичной форме.Это не происходитПоследняя информация, которую я получаю с сервера rails, заключается в том, что часть отображается правильно:

Started GET "/edit_track?id=373" for ::1 at 2019-04-08 22:40:35 -0500
Processing by TrackersController#edit_track as JS
  Parameters: {"id"=>"373"}
  Tracker Load (0.2ms)  SELECT  "trackers".* FROM "trackers" WHERE "trackers"."id" = ? LIMIT ?  [["id", 373], ["LIMIT", 1]]
  ↳ app/controllers/trackers_controller.rb:32
  Rendering trackers/edit_track.js.erb
  Rendered trackers/_edit.html.erb (2.6ms)
  Rendered trackers/edit_track.js.erb (5.3ms)
Completed 200 OK in 14ms (Views: 11.2ms | ActiveRecord: 0.2ms)
...