3

私は邪悪な宝石を使ってフォームウィザードを構築しています。ドキュメントでは current_user オブジェクトを使用していますが、別のオブジェクトを使用したいと考えています。このオブジェクトを使用できるように、redirect_to にパラメーターを追加するのに苦労しています。

products_controller.rb

def create
  @product = current_user.product.build(params[:product])
  @product.ip_address = request.remote_ip

  if @product.save
    redirect_to product_steps_path # This is where I think I need to pass product object but not sure how
  else
    render 'new'
  end
end

product_steps_controller.rb

class ProductStepsController < ApplicationController
  include Wicked::Wizard
  steps :apps, :templates

  def show
    @product = Product.find(params[:id])
    render_wizard
  end
end

ルート:

resources :products
resources :product_steps

上記のコードで発生するエラーは次のとおりです。

ActiveRecord::RecordNotFound in ProductStepsController#show

Couldn't find Product with id=apps

ドキュメントの current_user の例の代わりに、このような特定のオブジェクトで邪悪な宝石を使用するにはどうすればよいですか?

4

2 に答える 2

5

これは私が仕事を得たものです。

products_controller.rb

if @product.save
  redirect_to product_step_path(:id => "apps", : product_id => @ product.id)
else
...

product_steps_controller.rb

def show
  @asset = Asset.find(params[:asset_id])
  render_wizard
end
于 2012-11-26T23:27:40.113 に答える
0

Wizard gem は:idパラメーターをステップ名として受け取ります。:idステップ名と競合するため、パラメータとして渡さないでください。

products_controller.rb

redirect_to product_step_path(product_id: @product.id)

product_steps_controller.rb

@product = Product.find(params[:product_id])
于 2016-02-18T06:11:56.683 に答える