За последние 8 лет я пытался использовать Wicked gem 3 раза. Каждый раз я сдавался по одной и той же причине. Я пытаюсь снова, потому что, если я это понимаю, я думаю, что это будет идеально для моего варианта использования.
Моя главная проблема в том, что я не понимаю, как на самом деле запустить мастер. В примере, используемом в gem, это событие after_registration
, с которым уже связан объект user
. Это бесполезно, и я не думаю, что этот пример будет полезен в большинстве случаев использования.
Есть еще один пример создания Product
в несколько шагов. Однако автор не может адекватно объяснить маршрутизацию. Из https://github.com/zombocom/wicked/wiki/Building-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)
Это точное зеркало примера приложения восьмилетней давности. Но, конечно, @product не находится в переменной сеанса, как current_user
, поэтому в этом случае ошибка заключается в том, что нет продукта с идентификатором :step1.
Пожалуйста помоги! Мне не хватает чего-то очень, очень простого здесь, но мне очень нужно упорствовать.