应用_form.html的不同覆盖.在Spree Rails中,首先点击“New”,然后点击“Edit”视图



我是Rails新手。我希望应用2个覆盖,以便在其New和Edit视图中改变促销对象的显示。下面列出了覆盖。这两个覆盖都可以正常工作。

但是我不知道如何将一个覆盖应用于New视图,然后将第二个覆盖应用于Edit视图。

如何对每个New视图和Edit视图应用不同的覆盖?

目前,我的Promotion对象已成功创建并保存,但是它的值没有显示在编辑视图中。此外,编辑视图与New视图呈现相同,这是错误的。

代码:

使用Spree Deface,我重写了一个促销表单(_form.html.erb)来生成一个New (Create)视图,如下所示:

 Deface::Override.new(:virtual_path => "spree/admin/promotions/_form",
                 :name => "example-3",
                 :replace => "div.row",
                 :partial => "shared/new_promotion"
 )
在第二次重写中,我重写了_form.html。erb:
 Deface::Override.new(:virtual_path => "spree/admin/promotions/_form",
                 :name => "example-3",
                 :replace => "div.row",
                 :partial => "shared/uploadcsvfile"
 )

这些覆盖当前直接位于同一个目录中。

新建和编辑操作有单独的表单。两者都包含了新视图和编辑视图中所示的表单部分。

您希望根据您是在新视图中还是在编辑视图中显示不同的内容,因此您必须决定以下内容:

根据我在表单中知道的信息,如何确定表单是从编辑表单中绘制的,还是从新表单中绘制的?

我认为有两种简单的可能性:

  1. 检查表单方法是否为POST或PUT/PATCH。如果它是post,表单是用于创建操作(即从new),或者如果它是PUT/PATCH,它是用于更新(编辑)。

  2. 检查@promotion是否持久。

  3. 如果是持久化操作,则为编辑操作,否则为新操作。

您可以在您的新部分中执行这些检查并呈现适当的内容。

相关内容

最新更新