1

応答でロケーションを使用すると、検証エラーが無視され、指定されたロケーションにリダイレクトされます。これは予想される動作ですか?

モデルにエラーがあるかどうかをチェックするレスポンダーモジュールをチェックインしました。モデルを調べたところ、@solutionオブジェクトに検証エラーが含まれています。ここで何が欠けていますか?

コントローラ:

def create
  @problem = Problem.find(params[:problem_id])
  @solution = @problem.solutions.build params[:solution]
  @solution.save
  respond_with(@solution, :location => detail_problem_solution_path(@problem, @solution)
end

モデル:

  validates :body, :presence => true, :unless => :reference

参照はtrueまたはfalsefalseです。

4

2 に答える 2

1

私は今日この問題に遭遇し、github でこの Railsの問題に遭遇しました。ルート URL ヘルパーが保存されていない (無効な) レコードに対して有効なレコードを生成できないため、例外がスローされたようです。

procs を location パラメーターの引数として許可することに関する github の問題についての議論がありますが、すぐには追加されないようです。

今のところ、次のソリューションの使用に固執します。

def create
  @post = Post.new(params[:post])
  if @post.save
    respond_with(@post, location: edit_post_path(@post))
  else
    respond_with @post
  end
end
于 2012-07-15T23:56:19.890 に答える
0

私が解決できた唯一の方法はこれです:

  def create
    @problem = Problem.find(params[:problem_id])
    @solution = @problem.solutions.build solution_params
    success = @solution.save
    respond_with(@solution) do |format|
      format.html {redirect_to detail_problem_solution_path(@problem, @solution) } if success
    end
  end
于 2011-11-22T15:13:00.020 に答える