Form_for"表单中的第一个参数不能包含nil或为空"错误

Gre*_*reg 9 ruby ruby-on-rails

我无法弄清楚为什么我会收到这个错误,这究竟是什么意思.

表单中的第一个参数不能包含nil或为空(第3行)

添加新帖子

<%= form_for @post do |f| %>  //Error here
<p>
    <%= f.label :title, 'Title' %><br/>
    <%= f.text_field :title %><br/>
</p>
<p>
    <%= f.label :content, 'Content'%><br/>
    <%= f.text_area :content %><br/>
</p>
<p>
    <%= f.submit "Add a New Post" %>
</p>
<% end %>
Run Code Online (Sandbox Code Playgroud)

控制器:

class PostsController < ApplicationController
    def index
        @posts = Post.all
    end

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

    def new
        @post = Post.new
    end

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

        if @post.save
            redirect_to posts_path,  :notice => "Your post was saved"
        else
            render "new"
        end
    end

    def edit

    end

    def update

    end

    def destroy

    end
end
Run Code Online (Sandbox Code Playgroud)

Jim*_*art 17

假设您从PostsController传统视图名称渲染并使用传统视图名称,您的new方法应该创建一个新的Post并分配它:

def new
  @post = Post.new
end
Run Code Online (Sandbox Code Playgroud)

您可以使用类名(如@Yuriy建议的那样),但传统方法是实例化一个新对象.这允许您在保存后重复使用相同的表单视图来呈现错误.

如果您想了解这通常看起来如何,请创建一个新的Rails项目并使用scaffold生成器创建一些示例代码.