получить идентификатор из URL и использовать его для получения конкретных данных из таблицы - PullRequest
0 голосов
/ 12 июня 2019

Я делаю проект для учебы. Как я могу получить идентификатор из URL и передать его контроллеру для получения конкретных данных из таблицы

Это некоторые из кодов, которые я пробовал Я получаю эту ошибку. Не могу найти майора без идентификатора

Контроллер:

class MajorsController < ApplicationController
  before_action :set_major, only: [:show, :edit, :update, :destroy]

  # GET /majors
  # GET /majors.json
  def index
    @majors = Major.all
  end

  # GET /majors/1
  # GET /majors/1.json
  def show
    @majors = Major.find(params[:major_id])
    @courses = Course.all
  end

Это мои маршруты

Rails.application.routes.draw do
  get 'home/index'
  get 'home/contactUs'
  resources :courses
  resources :majors
  resources :sciences
  get '/majors/:id', to: 'majors#show', as: 'Major'
  root 'home#index'
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

Показать

<p id="notice"><%= notice %></p>

<p>
  <strong>Name:</strong>
  <%= @major.name %>
</p>

<p>
  <strong>Description:</strong>
  <%= @major.description %>
</p>

<p>
  <strong>Science:</strong>
  <%= @major.science.name %>
</p>
<p>
  <strong>Number of courses:</strong>
  <%= @major.courses.count %>
</p>

<table class="table table-hover">
  <thead>
  <tr>
    <th>Name</th>
    <th>Description</th>
  </tr>
  </thead>

  <tbody>

  <% @major.course.each do |m| %>
    <tr>
      <td><%= m.name %></td>
      <td><%= m.description %></td>
    </tr>
  <% end %>
  </tbody>
</table>
<%= link_to 'Edit', edit_major_path(@major) %> |
<%= link_to 'Back', majors_path %>


Я ожидаю, что вывод - это только два курса, которые у меня есть, но он выводит их все

1 Ответ

0 голосов
/ 12 июня 2019

Проблема решается добавлением маршрута, как @KonstantinStrukov сказал, что редактировал шоу

  <% @major.courses.each do |m| %>
    <tr>
      <td><%= m.name %></td>
      <td><%= m.description %></td>
    </tr>
  <% end %>

Файл Rotes

Rails.application.routes.draw do
  get 'home/index'
  get 'home/contactUs'
  resources :courses
  resources :majors
  resources :sciences
  get '/majors/:id', to: 'majors#show', as: 'Major'
  root 'home#index'
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
end

Контроллер

  def show
    @majors = Major.where(params[:id])
    @courses = Course.all
  end
...