将数据传递到邪恶向导的下一步

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

我刚刚观看了用于创建多步骤向导的Wicked gem上的Railscast

我想知道这个 gem 是否可以用于创建一个向导,其中数据在

render_wizard
调用中以某种方式向前传递?根据我最初的修改,我不认为这是可能的。我希望解决的问题是创建一个向导,第一步选择一个国家,第二步允许选择来自该国家的人员。

有没有更简单的方法来解决这个问题?感谢您的帮助!

ruby-on-rails wizard
2个回答
2
投票

您可以使用无表红宝石对象。在每个显示步骤之前将其序列化到会话,并在每个更新步骤之前从会话加载它(合并任何新参数)。

before_filter :initialize_wizard, on: [:show, :update]

...

def initialize_wizard
  @wizard = YourWizardTempModel.new
  @wizard.update_attributes(session['wizard']) if session['wizard'].present?
  @wizard.update_attributes(params['wizard']) if params['wizard'].present?
  session['wizard'] = @wizard.as_json
end

然后你可以有一个条件 before_filter 来根据 Country_id 组合人员选择,如下所示:

before_filter :populate_people, if: "step == 'select_people'"

...

def populate_people
  People.find_by_country_id(@wizard.country_id)
end

0
投票

你可以通过render方法将数据传递到下一步

render_wizard(@user, {}, { hello: 'world', your_param_key: "param value" })

这里的参数是

params[:hello] == "世界"

params[:your_param_key] == "参数值"

希望将来对其他人有帮助:)

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