Почему я получаю неопределенный метод "ошибки" для nil: NilClass? - PullRequest
1 голос
/ 09 октября 2019

Я делаю часть 5.11 начала работы с руководством по Ruby on Rails. Когда я пытаюсь редактировать статью на локальном сервере, я получаю сообщение об ошибке.

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

Это код для articles_controller:

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

  def index
    @articles = Article.all
  end

  def edit
    @articles = Article.find(params[:id])
  end

  def new
    @article = Article.new
  end

  def create
    @article = Article.new(article_params)

    if @article.save
      redirect_to @article
    else
      render 'new'
    end
  end

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

    if @article.update article_params
      redirect_to @article
    else
      render 'edit'
    end
  end

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

    redirect_to articles_path
  end

  private

  def article_params
    params.require(:article).permit :title, :text
  end
end

И этокод для редактирования статьи:

<h1>Edit article</h1>

 <%= form_with model: @article, local: true do |form| %>

   <% if @article.errors.any? %>
     <div id="error_explanation">
       <h2>
         <%= pluralize(@article.errors.count, "error") %> prohibited
         this article from being saved:
       </h2>
       <ul>
         <% @article.errors.full_messages.each do |msg| %>
           <li><%= msg %></li>
         <% end %>
       </ul>
     </div>
   <% end %>

   <p>
     <%= form.label :title %><br>
     <%= form.text_field :title %>
   </p>

   <p>
     <%= form.label :text %><br>
     <%= form.text_area :text %>
   </p>

   <p>
     <%= form.submit %>
   </p>

 <% end %>

<%= link_to 'Back', articles_path %>

Я ожидал, что смогу редактировать статью и сохранить ее. Вместо этого я получаю сообщение о том, что метод «ошибки» не определен.

1 Ответ

1 голос
/ 09 октября 2019

В вашем действии edit, кажется, есть опечатка. Вы должны присваивать результат Article.find(params[:id]) @article, а не @ article

Обратите внимание, что переменные экземпляра в Ruby будут иметь значение по умолчанию nil

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