NoMethodError в ArticlesController#создать неопределенный метод «сохранить» для nil:NilClass

У меня проблема с моим приложением, сейчас я дам вам код из приложения и изображение ошибки, это моя задача: я должен создать веб-приложение из рубина на рельсах, и приложение должно создавать статьи и сохранять их в базу данных.

Это изображение ошибки: https://i.stack.imgur.com/hYTkl.png

мой код облака 9

маршруты.rb:

Rails.application.routes.draw do
 # The priority is based upon order of creation: first created -> highest 
 priority.
 # See how all your routes lay out with "rake routes".

 # You can have the root of your site routed with "root"
 # root 'welcome#index'
resources :articles

root 'pages#home'
get 'about', to: 'pages#about'

ст.рб:

class Article < ActiveRecord::Base

end

article_controller.rb:

class ArticlesController < ApplicationController

   def new
     @article = Article.new 
   end
    def create
       #render plain: params[:article].inspect
    @article.save 
    redirect_to_articles_show(@article)
    end
    private 
    def article_params 
   params.require(:article).permit(:title, :description)


   end





end

новый.html.erb:

Создать статью

<%= form_for @article do |f| %>

<p>
    <%= f.label :title %>

    <%= f.text_field:title %>

</p>
<p>
    <%= f.label :description  %>
    <%= f.text_area :description %>

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

</p>
    <% end %>

мой файл миграции:

class CreateArticles < ActiveRecord::Migration
  def change

      create_table :articles do |t|
        t.string :title
        t.text :description

    end
  end
end

моя схема.rb:

ActiveRecord::Schema.define(version: 20170820190312) do

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

end

person Shashi Yerra    schedule 24.08.2017    source источник


Ответы (2)


Вам нужно создать экземпляр объекта в create method перед его сохранением.

Попробуйте обновить свой метод create следующим образом:

def create
  @article = Article.new(article_params)

  @article.save
  redirect_to @article
end

Надеюсь, это поможет!

person Dan Kreiger    schedule 24.08.2017

Ваш @article в действии создания — nil. Попробуй это

def create
  @article = Article.new(article_params)
  @article.save 
  redirect_to_articles_show(@article)
end
person Ursus    schedule 24.08.2017