2016-08-12 41 views
0

每當我嘗試保存帖子時,都會顯示此錯誤。PostsController中的NoMethodError#創建未定義的方法`body'

Image

這是我的new.html.erb文件。

<div id="page_wrapper"> 
<h1>New Post</h1> 
    <%= form_for :post, url: posts_path do |f| %> 
    <% if @post.errors.any? %> 
    <div id="errors"> 
    <h2><%= pluralize(@post.errors.count, "error") %> prevented this post from saving:</h2> 
    <ul> 
     <% @post.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
    </ul> 
    </div> 
<% end %> 
<p> 
    <%= f.label :title %><br> 
    <%= f.text_field :title %><br> 
</p> 

<p> 
    <%= f.label :date %><br> 
    <%= f.text_field :date %><br> 
</p> 

<p> 
    <%= f.label :time %><br> 
    <%= f.text_field :time %><br> 
</p> 

<p> 
    <%= f.label :location %><br> 
    <%= f.text_field :location %><br> 
</p> 

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

這是我的show.html.erb文件。

<div id="page_wrapper"> 
<h1 class="title"> 
    <%= @post.title %> 
</h1> 

<p class="date"> 
    Submitted <%= time_ago_in_words(@post.created_at) %> Ago 
</p> 

<p class="time"> 
    <%= @post.time %> 
</p> 

<p class="location"> 
    <%= @post.location %> 
</p> 
</div> 

這是我的posts_controller.rb文件。

class PostsController < ApplicationController 
def index 
    @posts = Post.all.order('created_at DESC')  
end 

def new  
    @post = Post.new  
end 

def create 
    @post = Post.new(post_params) 

    if @post.save 
     redirect_to @post 
    else 
     render 'new' 
    end 
end 

def show 
    @post = Post.find(params[:id])  
end 

private 
def post_params 
    params.require(:post).permit(:title, :body, :location) 
end 
end 

赫斯是我routes.rb文件

Rails.application.routes.draw do 
    resources :posts 
    root "posts#index" 
end 
+0

分享您的schema.rb –

+0

喜@pavan我schema.rb看起來像這樣,ActiveRecord的:: Schema.define(版本:20160812052026)做 CREATE_TABLE 「上崗」,力:級聯做| T | t.string 「稱號」 t.string 「日期」 t.string 「時間」 t.text 「位置」 t.datetime 「created_at」,空:假 t.datetime 「的updated_at」,空:假 結束 結束 – Bikal

+0

@ArunKumar我有我的上述錯誤的截圖,它給了我NoMethodError在PostsController#創建 未定義的方法'身體」爲#<帖子:0x007f3b81a787f8>每當我保存後 – Bikal

回答

1

您已經在post.rb添加body驗證。但是您的posts表中沒有body字段。

所以,當調用@post.create,在post.rb中定義的所有的驗證,運行,因爲你沒有一個body場,你得到一個Undefined method 'body' for Post錯誤。

爲了解決這個問題,請刪除body驗證在post.rb

刪除以下行

validates :body, presence: true 

,你應該是好去。

0
params.require(:post).permit(:title, :body, :location) 

您需要:body但在你的表格你有title, date, time and location

刪除,並確保你有這樣的屬性在你的堅強PARAMS這樣的:

params.require(:post).permit(:title, :date, :time, :location) 
+0

仍然是同樣的問題,不工作:( – Bikal

相關問題