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"}
任何人都可以对此有所了解吗?谢谢!
答案 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