同じビューで異なるモデルの複数のフォームを持つソートのダッシュボードを作成しました。私の目標は、各フォームのすべてのエラーメッセージをダッシュボードに表示させることです。ダッシュボードはPagesControllerの一部であり、フォームは他のコントローラに属します。Rails複数のフォームを1つのビューでレンダリングエラーを発行する
現在、すべてのフォームがうまく機能しています。ただし、エラーが発生すると、ダッシュボードではなく他のビューでレンダリングされます。ダッシュボードページのエラーを「レンダリング」しようとすると、他のフォームのモデルが欠落しているというエラーが表示されます。
ダッシュボードビューの外でレンダリングする「レンダリング」の例。
class NotesController < ApplicationController
def create
@note = Note.new(params[:note])
if @note.save
flash[:notice] = "Note Created!"
redirect_to dashboard_path
else
flash[:alert] = "Note failed"
render :action => "new"
end
end
end
ダッシュボードビュー内でエラーをレンダリングする例です。
class NotesController < ApplicationController
def create
@note = Note.new(params[:note])
if @note.save
flash[:notice] = "Note Created!"
redirect_to dashboard_path
else
flash[:alert] = "Note failed"
render 'pages/home'
end
end
end
繰り返して、ダッシュボードページにすべてのエラーが表示されるようにしています。あなたがより多くの情報を希望したら教えてください。
(HAMLに)私が間違ってこれを理解することができるが、私は「ページ/ホーム」をレンダリング使用するときに私の見解は、ロードに失敗しました。私はそれがすべての必要なインスタンス変数がロードされていない 'ページ/家'にすることだと思う。レンダリングはページ/ホームビューをレンダリングしますが、インスタンス変数を持つページ/ホームアクションはレンダリングしないためです。 – jlarry
私はこの宝石、https://github.com/rails/render_componentのようなものが必要なように見えますが、これはレールでこれを行う適切な方法があるかどうかを判断しようとしています。 – jlarry
インスタンス変数の読み込みを行うload_homeプライベートメソッドを作成することができます。 (編集済みの回答) –