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

时间:2014-06-07 16:17:56

标签: ruby-on-rails forms ruby-on-rails-4 controller

我的form_for存在一些问题,我一直收到此错误

  

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

这是表格

           <%= form_for @blog do |f| %>
            <%= f.text_area :blogpost %>
            <%= f.submit  'Add Blog'%>
             <% end %>

这是我的控制器

 class BlogsController < ApplicationController
   def index
    @blogs = Blog.all  #.paginate(page: params[:page], per_page: 5)
   end


 def create
  @blog = Blog.create(blog_params)
  redirect_to root_path, notice: "Created a Blog" 
 end

 def update
  @blog = Blog.create(blog_params)
  redirect_to root_path 
 end

def show
  @blog = Blog.find(params[:id])
  end

 def new
 @blog = Blog.new
 end

 def edit
 @blog = Blog.find(params[:id])
 end

def destroy
 @blog = Blog.find(params[:id])
  @blog.destroy
 redirect_to root_path
end

private
 def blog_params
   params.require(:blog).permit(:blogpost)
 end

end

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

由于它属于 index.html.erb ,您应该将此行@blog = Blog.new添加到index方法。

def index
@blogs = Blog.all  
@blog = Blog.new
end

您的 update 方法也是错误的。它应该是这样的,以避免将来出现错误。

def update
  @blog = Blog.update(blog_params)
  redirect_to root_path 
 end