Проблемы с link_to "Edit" в рельсах

Я пытаюсь отобразить все показатели в формате таблицы с возможностью редактирования. Но я получаю ошибку ниже

Проблемы с link_to "Edit" в рельсах

В режиме индекса я могу видеть все данные. Но когда я нажимаю ссылку редактирования, это не перенаправляет на вид редактирования, где у меня отображаются разные столбцы.

просмотр индекса:

<%= form_for :metrics_controller, url: metrics_path(@metric), method: :get do |f| %>
  <table id = "metrics">
    <thead>
    <tr id = "AllMetricColumnNames">
      <th id = "CommentsColumn">Comments</th>
      <th id = "EditColumn">Edit</th>
    </tr>
    </thead>
    <% @metricAll.each do |data| %>
      <tr id = "AllMetricValues">
        <td id = "Comments"><%= data.Comments %></td>
        <td id = "EditButton"><%= link_to "Edit", edit_metric_path(@metricAll) %></td>
    <% end %>
    </tr>
  </table>
<% end %>

Контроллер:

class MetricsController < ApplicationController
  def index
    @metricAll = Metric.all
  end

  def show
    @metric = Metric.find(params[:id])
  end

  def edit
    @metric = Metric.find(params[:id])
  end

  private def post_params
    params.require(:metric).permit(:Metric, :Comments)
  end
end

маршруты:

  root 'metrics#index'
  get 'index' => 'metrics#index'
  get 'edit' => 'metrics#edit'
  resources :metrics

🤔 А знаете ли вы, что...
Ruby on Rails имеет встроенную поддержку для кеширования, что способствует улучшению производительности приложения.


45
2

Ответы:

Вы передаете ВСЕ метрики для маршрута редактирования. Двигаться из

<td id = "EditButton"><%= link_to "Edit", edit_metric_path(@metricAll) %></td>

к

<td id = "EditButton"><%= link_to "Edit", edit_metric_path(data) %></td>

data - текущая метрика в вашем коде


Судя по вашему скриншоту, ошибка находится в пределах модели. Кроме того, как упоминалось другими, вам следует удалить эти маршруты get, так как resources :metrics будет генерировать необходимые маршруты для всех ваших действий CRUD, a.ka. для index, show, edit, new, create, update, destroy.

Я предполагаю, что файл metric.rb имеет отношение belongs_to :automated_thresholding, но в таблице базы данных metrics отсутствует поле automated_thresholding_id.

Вы должны создать миграцию, чтобы добавить это поле

add_reference :metrics, :automated_thresholding