0

私はRailsが初めてです。New ビューと Edit ビューでの Promotions オブジェクトの表示を変更するために、2 つのオーバーライドを適用したいと考えています。オーバーライドを以下に示します。どちらのオーバーライドも、単独で正しく機能します。

しかし、1 つのオーバーライドを New ビューに適用し、次に 2 つ目のオーバーライドを Edit ビューに適用する方法がわかりません。

New ビューと Edit ビューのそれぞれに異なるオーバーライドを適用するにはどうすればよいですか?

現在、私のプロモーション オブジェクトは正常に作成され、保存されていますが、その値は編集ビューに表示されません。さらに、編集ビューは新しいビューと同じようにレンダリングされますが、これは間違っています。

コード:

Spree Deface を使用して、プロモーション フォーム (_form.html.erb) をオーバーライドして、次のような新しい (作成) ビューを生成します。

 Deface::Override.new(:virtual_path => "spree/admin/promotions/_form",
                 :name => "example-3",
                 :replace => "div.row",
                 :partial => "shared/new_promotion"
 )

2 番目のオーバーライドでは、次のように _form.html.erb をオーバーライドします。

 Deface::Override.new(:virtual_path => "spree/admin/promotions/_form",
                 :name => "example-3",
                 :replace => "div.row",
                 :partial => "shared/uploadcsvfile"
 )

これらのオーバーライドは現在、直接同じ場所にあります。

4

1 に答える 1

0

新規アクションと編集アクション用に別々のフォームがあります。どちらにも、新しいビュー編集ビューに示されているように、フォームの部分が含まれています。

新しいビューか編集ビューかに基づいて異なるコンテンツを表示する必要があるため、次のことを決定する必要があります。

フォーム内で知っている情報に基づいて、フォームが編集フォーム内から描画されたのか、新しいフォーム内から描画されたのかをどのように判断できますか。

私が見ることができる2つの簡単な可能性があります:

  1. フォーム メソッドが POST であるか、または PUT/PATCH であるかを確認します。post の場合、フォームは create アクション (つまり、from new) を対象としています。PUT/PATCH の場合は、更新 (edit) を対象としています。

  2. @promotion永続化されているかどうかを確認します。永続化されている場合は編集アクションであり、それ以外の場合は新しいアクションです。

新しいパーシャルでこれらのチェックを行い、適切なコンテンツをレンダリングできます。

于 2014-05-27T17:14:40.890 に答える