Rails入门教程5.7:未正确创建文章对象

时间:2014-06-06 03:28:24

标签: ruby-on-rails-4

Rails:4.1.2 Ruby:2.1.2

我正在尝试完成入门教程(http://guides.rubyonrails.org/getting_started.html),但我遇到了第5.7节的问题。在我的标题和文本都应该正确显示的时候,我得到一个“未知属性:标题”。我怀疑文章对象没有被正确创建或保存,但是我找不到这个错误。

这是我的articles_controller.rb:

class ArticlesController < ApplicationController
  def new
  end

  def create
    # render plain: params[:article].inspect
    @article = Article.new(article_params)

    @article.save
    redirect_to @article
  end

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


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

  private :article_params
end

我的show.html.erb:

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

<p>
  <strong>Text:</strong>
  <%= @article.text %>
</p>

我的佣金路线:

       Prefix Verb   URI Pattern                  Controller#Action
     articles GET    /articles(.:format)          articles#index
              POST   /articles(.:format)          articles#create
  new_article GET    /articles/new(.:format)      articles#new
 edit_article GET    /articles/:id/edit(.:format) articles#edit
      article GET    /articles/:id(.:format)      articles#show
              PATCH  /articles/:id(.:format)      articles#update
              PUT    /articles/:id(.:format)      articles#update
              DELETE /articles/:id(.:format)      articles#destroy
welcome_index GET    /welcome/index(.:format)     welcome#index
         root GET    /                            welcome#index

也可能感兴趣的是错误页面报告的参数,它们看起来并不像我预期的那样,但我知道什么?

参数:

{"utf8"=>"✓",
 "authenticity_token"=>"OFbPxhf...2V+e9zu3A=",
 "article"=>{"title"=>"sdf",
 "text"=>"sadfdf"},
 "commit"=>"Save Article"}

任何人都可以对此有所了解吗?谢谢!

2 个答案:

答案 0 :(得分:1)

这应该是

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

并删除此行private :article_params并尝试一次

答案 1 :(得分:0)

基于此,根据您的评论,#<Article id: nil, created_at: nil, updated_at: nil>"问题在于,在创建文章模型时,您没有添加标题和文本列。试试这个:

rails g migration add_title_to_articles title:string text:text
rake db:migrate

那应该为你的文章模型添加一个title属性,你应该好好去。

阅读本指南的第5.4节后,我怀疑您忘记了generate model命令的一小部分并且缺少这些字段。而不是:

rails generate model Article title:string text:text

您可能已经这样做了:

rails generate model Article

这只会生成:id,:created_at和:updated_at

http://guides.rubyonrails.org/getting_started.html#creating-the-article-model