2013-09-01 78 views
2

我做的Getting started with Rails tutorial,當我從shell中運行的本地服務器我得到這個:NoMethodError在帖子#新

`NoMethodError in Posts#new` `/_form.html.erb where line #1 raised: 
`undefined method `model_name' for NilClass:Class 

即提取的源(左右線#1):

1: <%= form_for @post do |f| %> 
2: <% if @post.errors.any? %> 
3: <div id="errorExplanation"> 
4:  <h2><%= pluralize(@post.errors.count, "error") %> prohibited 

我剛剛開始使用Ruby on Rails,但無法弄清楚發生了什麼。我究竟做錯了什麼?

回答

3

錯誤信息,你正在看到意味着你有一些變量,包含一個nil對象,而不是你期望的實際對象。

儘管錯誤消息沒有明確引用此,但很可能您的@post變量爲零。

爲什麼是零?在這裏給出代碼幾乎是不可能的。請發佈您的PostsController#new行動。

+0

謝謝您回答。我認爲更好,如果我把所有的工作人員 – Hell0

+0

謝謝你的答案。如果我把所有這些東西放在其他問題中,我認爲會更好。我再次閱讀文檔,並再次發現我未知的其他功能。 「主動模式只能在Rails 4.0中運行?」,holly b。不管怎麼說,還是要謝謝你。 – Hell0

+0

這聽起來不對;我相當確定自3.x系列以來,ActiveModel已經成爲Rails的一部分。 –

2

的解決方法是爲posts_controller.rb,添加下面的代碼

高清新 @post = Post.new 結束

好運

1
// Make sure to use model declaration inside your method to check the error logs 

class PostsController < ApplicationController 

def new 
@post = Post.new 
end