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



我刚刚在用于创建多步骤向导的邪恶宝石上观看了 Railscast。

我想知道这个 gem 是否可以用来创建一个向导,其中数据在 render_wizard 调用中以某种方式向前传递?根据我最初的修补,我认为这是不可能的。我希望解决的问题是创建一个向导,其中第一步采用一个国家,第二步允许从该国家/地区选择人员。

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

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

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

相关内容

  • 没有找到相关文章

最新更新