Возникли проблемы с link_to "Редактировать" в рельсах - PullRequest
0 голосов
/ 13 ноября 2018

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

enter image description here

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

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

<%= 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

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Согласно вашему скриншоту, ошибка в модели.Также, как упоминалось другими, вы должны удалить эти 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

0 голосов
/ 13 ноября 2018

Вы передаете ВСЕ метрики для редактирования маршрута.Переход от

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

к

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

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

...