目前正在开展一个项目,遇到过一个我以前从未遇到过的问题。目前正在进行登录注册页面,要求用户注册。之前我有一个未定义的方法`name'error,然后意识到该方法不被称为名称,它被称为full_name。我已经浏览了所有文件夹,以确保任何方法或属性都不称为“名称”,并将其重命名为“full_name”。刷新浏览器后,我收到了以前没见过的错误。有些人可以解释一下这个错误是什么以及我怎么可能解决它。
缺少模板
缺少模板用户/创建 {:handlers => [:erb,:rjs,:builder, :rhtml,:rxml],:formats => [:html], :视图路径中的locale => [:en,:en]} “C:/用户/ patterd /文件/项目/应用程序/意见”
答案 0 :(得分:43)
如果您不在控制器的create
方法中重定向,则会发生此错误。
您是在重定向控制器中的create方法还是呈现新表单,以防出现错误?
如果没有控制器中create方法的重定向,则需要创建一个名为create.html.erb
的新文件。通常,在成功创建后,您将重定向到其他页面,如下所示
def create
# some object you want to create
# if the object.save is fine
# redirect_to object
# else
# render new with the errors
# end
end
答案 1 :(得分:21)
在我的情况下,我必须处理并不渲染任何视图。
def return_payment
# do lots of stuff
head :ok
end
答案 2 :(得分:2)
我遇到了同样的问题,原因是我意外地离开了其他空的“创造”方法:)
答案 3 :(得分:2)
通常会发生缺少模板错误 - 当你没有该控制器方法的视图文件时,或者 - 如果一个方法只是用于没有任何视图文件的计算,那么您必须渲染/重定向该方法。
如果您不渲染或重定向该方法,它将搜索当前方法名称的视图页面(在您的情况下,它将搜索create.html.erb)。因此,您必须渲染/重定向该方法。
答案 4 :(得分:0)
我遇到了同样的问题,只是添加了redirect_to并且有效!
def update
@visitor = Visitor.find(params[:id])
if @visitor.update_attributes(visitor_params)
flash[:notice] = "Update ok!"
redirect_to root_path #just added this line and it worked!
else
render 'edit'
end
end