0

create メソッドといくつかの検証を備えたかなり標準的なコントローラーがあります。

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"することです。それを a に置き換えると、redirect_to期待どおりに機能しますが、フォームエラーを渡すことができないようです。

new の元の呼び出しから @type インスタンス (@type.errors を含む) が存在することを知っており、render 呼び出しの直前にそれをスローすると、これが確認されます。

更新時に検証が失敗した場合も同じことが起こっています。レンダリング呼び出しが無視されているようです!

注: 私のルーティング構造は少し型破りですが、これが関連している理由がわかりません。

4

1 に答える 1

0

これは非常によく似ています:コントローラーで定義されたパスとアクションが無視される、Ruby on Rails

その質問への回答に基づいて、ビューをレンダリングするために必要な何かが欠けていると推測しています。その結果、レールは呼び出しを完全にnewスキップしてレンダリングしています。rendercreate

newコントローラーのアクションとビューを表示できますか?

于 2012-08-11T14:19:48.020 に答える