我正在使用邪恶的宝石来构建表单向导。在文档中,它使用的是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
如何在这样的特定对象上使用邪恶的gem而不是文档中的current_user示例?
答案 0 :(得分: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
答案 1 :(得分:0)
向导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])