在验证失败时,操作不会呈现

时间:2012-08-11 13:06:57

标签: ruby-on-rails ruby-on-rails-3

我有一个相当标准的控制器,带有创建方法和一些验证。

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),并且在渲染调用确认之前抛出它。

当更新验证失败时,同样的事情发生似乎只是忽略了渲染调用!

注意:我的路由结构有点不合常规,但我不明白为什么这应该是相关的。

1 个答案:

答案 0 :(得分:0)

这看起来很相似:Path defined in controller and action is getting ignored, Ruby on Rails

基于该问题的答案,我猜测渲染new视图时需要遗漏一些内容,因此rails只是完全跳过render调用并渲染create

您能显示new控制器操作和视图吗?