我刚刚观看了用于创建多步向导的Wicked gem上的Railscast 。
我想知道这个 gem 是否可以用来创建一个向导,在render_wizard
调用中以某种方式传递数据?根据我最初的修补,我不相信这是可能的。我希望解决的问题是创建一个向导,其中第一步选择一个国家,第二步允许选择该国家的人。
有没有更简单的方法来解决这个问题?谢谢您的帮助!
我刚刚观看了用于创建多步向导的Wicked gem上的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