NoMethodError в Articles # показывают, но совпадают ли переменные экземпляра? неопределенный метод `title 'для nil: NilClass - PullRequest
0 голосов
/ 09 апреля 2020

article_controller.rb:

class ArticlesController < ApplicationController

    def show
        @article = Article.find(params[:id])
    end

end

show. html .erb:

<h1>Showing article details</h1>

<p><strong>Title: </strong><%= @article.title %></p>
<p><strong>Description: </strong><%= @article.description %></p>

schema.rb:

ActiveRecord::Schema.define(version: 2020_04_08_043002) do

  create_table "articles", force: :cascade do |t|
    t.string "title"
    t.text "description"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

end

rout.rb:

Rails.application.routes.draw do
  root 'pages#home'
  get 'about', to: 'pages#about'
  resources :articles, only: [:show]
end

Новичок в Ruby, поэтому я не уверен, что сделал не так, любая помощь очень ценится!

1 Ответ

0 голосов
/ 13 апреля 2020

Я не вижу никаких проблем с кодом. Когда вы создаете маршрут типа resources :articles, only: [:show], он генерирует метод GET, например /articles/:id. Поэтому, когда вы вызываете действие show, убедитесь, что в пути указано значение id, например, localhost:3000/articles/779.

Если идентификатор не присутствует в пути, то контроллер не знает значение params. ie params[:id] будет nil. Это составляет @article = nil. Таким образом, @article.title приводит к этой ошибке, по вашему мнению. Пожалуйста, проверьте, не является ли это возможной ошибкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...