我有一个相当标准的控制器,带有创建方法和一些验证。
def create
@type = Type.new(params[:type])
respond_to do |format|
if @type.save
format.html { redirect_to types_path, notice: 'Type was successfully created.' }
format.json { render json: @type, status: :created, location: @type }
else
format.html { render action: "new" }
format.json { render json: @type.errors, status: :unprocessable_entity }
end
end
end
问题是,当验证失败时,我收到错误Missing template ontology/types/create
,好像render action: "new"
不存在一样。如果我用redirect_to
替换它,那么它按预期工作,但似乎我无法传递表单错误。
我知道在new的原始调用中有一个@type实例(带有@type.errors),并且在渲染调用确认之前抛出它。
当更新验证失败时,同样的事情发生似乎只是忽略了渲染调用!
注意:我的路由结构有点不合常规,但我不明白为什么这应该是相关的。
答案 0 :(得分:0)
这看起来很相似:Path defined in controller and action is getting ignored, Ruby on Rails
基于该问题的答案,我猜测渲染new
视图时需要遗漏一些内容,因此rails只是完全跳过render
调用并渲染create
。
您能显示new
控制器操作和视图吗?