我的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
我该如何解决这个问题?
答案 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