我觉得这个有些愚蠢,但是:
if @prof.update_attributes(params[:profile])
respond_to do |format|
format.html {redirect_to(@prof, :notice => "Profile successfully created.") }
end
end
...在我的控制器的更新方法中。我在模型中验证了一些属性。
如果验证失败,我只想让它们回到同一个表格上,以便用各种红色文字进行骂。 (即错误数组中的所有内容)。
验证失败时,我收到“模板丢失”错误 - “更新”模板。我觉得我忽略了一些非常简单的事情。救命啊!
答案 0 :(得分:2)
试试这个:
respond_to do |format|
if @prof.update_attributes(params[:profile])
format.html { redirect_to(@prof, :notice => "Profile successfully created.") }
else
format.html { render action: 'edit' }
end
end
答案 1 :(得分:1)
错误的原因是由于除非另有说明,否则Rails将尝试呈现与操作同名的模板,在本例中为update
,这显然不存在。
您要做的是告诉rails在发生错误时再次呈现edit
操作。通常,您可以使用respond_to
块执行此操作,从而允许块以不同的方式响应,具体取决于验证是通过还是失败。
目前,你有if语句包装块,并且没有语句告诉rails在发生错误时以不同方式呈现。要解决这个问题,我会做以下事情:
respond_to do |format|
if @prof.update_attributes(params[:profile])
# all is well, redirect as you already wrote
else
format.html { render action: 'edit' }
end
end