如何用Wicked gem创建一个路径并使用路径进入多步骤表格的第一步?

问题描述 投票:0回答:1

在过去的8年里,我已经尝试过3次使用Wicked gem。每一次,我都以同样的理由放弃了。我再次尝试,因为如果我理解它,我认为它将是完美的使用案例。

我的主要问题是,我不明白如何真正开始向导。在创业板中使用的例子中,它是个 after_registration 已有关联的 user 对象。这没有什么帮助,我也不认为这个例子对大多数用例有帮助。

还有一个例子是关于构建一个 Product 在多个步骤中。但是,作者没有对路由进行充分的解释。从 https:/github.comzombocomwickedwikiBuilding-Partial-Objects-Step-by-Step。:

Since Wicked uses our :id parameter we will need to have a route that also includes :product_id for instance /products/:product_id/build/:id. This is one way to generate that route:

resources :products do
  resources :build, controller: 'products/build'
end

This also means to get to the create action we don't have a product_id yet so we can either create this object in another controller and redirect to the wizard, or we can use a route with a placeholder product_id such as [POST] /products/building/build in order to hit this create action.

好吧,我不知道这句话的第二部分是什么意思,至于......。placeholder product_id 和该路由名称的 /products/building/build. 我花了2个小时的时间来尝试这个方法,然后就开始创建一个空白的表单。

...we can either create this object in another controller and redirect to the wizard

这就是我在成功保存@product对象时要做的事情。

redirect_to product_by_interchange_path(@product, :step1)

但这行不通。raise InvalidStepError if the_step.nil? 说我的步骤为零。其实不然。

redirect_to product_by_interchange_path(@product, step: :step1)

同样的事情。

redirect_to product_by_interchange_path(:step1)

这和8年前的示例应用一模一样。但当然,@product并不在一个会话变量中,比如说 current_user 是,所以在这种情况下,错误是没有id为:step1的产品。

请大家帮忙! 我在这里遗漏了非常非常基本的东西,但我非常需要坚持。

ruby-on-rails ruby-on-rails-5 ruby-on-rails-5.2 wicked-gem
1个回答
0
投票

好吧,我终于想通了。下面是我所做的。

  1. 首先,我把我的控制器换成了普通的老式控制器... ApplicationController 并使用了包括 include Wicked::Wizard. 我不知道这是否有什么作用,但新的例子和旧的一样布置。
  2. 我真的是搞砸了 :id. 我在想 :id 一般是我的对象ID。我在我的控制器里有一个set_product私有方法,但它失败了。当我最终发现 :id 是实际的步骤本身,导致我改变了重定向的路径。
  3. 我把重定向从 product_by_interchange_path(@product, :select_vehicle)product_by_interchange_path(:select_vehicle, product_id: @product.id)
  4. 我摆脱了我的 set_product. 就在我试图消除混乱的时候。
  5. 我在向导中把我的查找器调用改为使用 :product_id 而不是 :id.

现在可以用了。我还是不明白,我怎么会用一个占位的product_id支出一个路由,这还是个谜。但是这个很好,而且能用。

© www.soinside.com 2019 - 2024. All rights reserved.