0

さて、私は単純な何かを見逃している必要があります。

部分的な「/shared/_error_messages.html.erb」を使用して処理しています

<%= render 'shared/error_messages', object: f.object %>

私のフォーム(1つはプログラムの追加用、もう1つはメトリックの追加用)。

任意のフォーム(/ programs/newおよびmetrics/new)に移動すると、ページが読み込まれたときに検証が表示されます。

programs_controllerとmetrics_controllerは構造的に同じです(metrics_controllerの@programsの@metricsを交換します):

#programs_controller.rb
def new
  @programs = Program.new(params[:name])
  if @programs.save
    flash[:success] = "Program saved"
    redirect_to "/program"
  else
    render 'new'
  end
end

これを引き起こしている可能性のあるアイデアはありますか?

これが部分的です:

<% if object.errors.any? %>
  <div id="error_explanation">
    <div class="alert alert-error">
      The form contains <%= pluralize(object.errors.count, "error") %>.
    </div>
    <ul>
     <% object.errors.full_messages.each do |msg| %>
       <li>* <%= msg %></li>
     <% end %>
    </ul>
  </div>
<% end %>
4

1 に答える 1

3

エラーが何であるかはわかりませんが、問題は、newアクションでオブジェクトを保存していることです。保存すると、オブジェクトエラーが発生します。それがあなたがそれらを見る理由です。

あるRESTful意味で、新しいアクションはモデルをインスタンス化し、オブジェクトをフォームに渡すだけです。createフォームはそれをアクションに送信します。オブジェクトを保存してエラーを確認する必要がある場所。
何かのようなもの:

#programs_controller.rb
def new
  @programs = Program.new
end

def create
  @programs = Program.new(params[:program])
  if @programs.save
    # success
  else
    # failure
  end
end
于 2012-12-21T00:54:32.487 に答える