如何在Rails上的红宝石中解决“#<articlescontroller:0x9d00548>的未定义局部变量或方法'article'”的问题

时间:2019-05-28 12:18:50

标签: ruby-on-rails ruby

我是Rails Web开发领域的红宝石新手。现在,我尝试在Rails上使用ruby创建简单的表单。

但是提交表单后,它显示以下错误,

NameError in ArticlesController#create

undefined local variable or method `article` for #<ArticlesController:0x9d00548> Did you mean? article_url

Request

Parameters:

{"utf8"=>"✓",
"authenticity_token"=>"vUOVlqSQTJMHGT11RhZKv4jfcKgEyxnHXCMiHSeaUI7ghsnoZ4vsjZ/QmM2d/MvLLV0YFJ1UIn61RTgJEcgVvA==",
"article"=>{"itle"=>"Text heading", "text"=>"Text subject"},
"commit"=>"Save Article"}

Response
Headers:

None

我的代码部分是

new.html.erb

<h1>New Article</h1>

<%= form_with scope: :article, url: articles_path, local: true do |form| %>
    <p>
        <%= form.label :itle %><br>
        <%= form.text_field :itle %>
    </p>
    <p>
        <%= form.label :text %><br>
        <%= form.text_field :text %>
    </p>

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

文章管理员

class ArticlesController < ApplicationController
    def new

    end

    def create
        @article = article.new(params[:article].inspect)

        @article.save
        redirect_to @article
    end
end

路线

Rails.application.routes.draw do
  get 'welcome/index'

  resources :articles
  # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
  root 'welcome#index'
end

如果我使用下面的这一行打印输入值,

render plain: params[:article].inspect

它显示以下消息,

<ActionController::Parameters {"title"=>"First Article!", "text"=>"This is my first article."} permitted: false>

但是我使用 article.new(params [:article] .inspect)这行不起作用。

我检查了我的代码,但不知道如何解决此问题。

如果有人帮助我找到我做编码的错误

我通过使用此页面https://guides.rubyonrails.org/getting_started.html

实现代码

1 个答案:

答案 0 :(得分:1)

移至

@article = article.new(params[:article])

@article = Article.new(params[:article])

您需要使用该类来创建对象。另外,是的,article不存在