如何在AJAX中使用Wicked向导gem?

时间:2017-04-01 07:20:07

标签: javascript ruby-on-rails ruby-on-rails-4 formwizard wicked-gem

我正在使用wicked创建一个多步骤向导。我想使用AJAX,这样我就可以逐步完成表单,而无需重新加载页面。我无法在网上找到有关如何执行此操作的任何信息。有没有人这样做过?

1 个答案:

答案 0 :(得分:0)

我可能有点晚了,但我只是在使用这些相同功能的项目,所以如果有其他人想知道同样的事情,希望这可能会有所帮助。

一般情况下,最好像设置普通HTML向导一样设置Wicked:

的应用程序/控制器/ set_up_positions_controller.rb

class SetUpPositionController < ApplicationController

    include Wicked::Wizard

    steps :appointment_settings, :lab_settings

    def show
        case step
        when :appointment_settings
        when :lab_settings
        end
        render_wizard
    end

    def update
        case step
        when :appointment_settings
            #LOGIC
        when :lab_settings
            #LOGIC
        end
        render_wizard @position
    end

end

从这里开始,诀窍是为每个步骤创建一个step_name.js.erb和一个_step_name.html.erb文件。 IE浏览器。

的应用程序/视图/ set_up_positions / appointment_settings.js.erb

$('#clinics-content').html('<%= j render "clinic_management/set_up_position/appointment_settings" %>');

的应用程序/视图/ set_up_positions / _appointment_settings.html.erb

<%= simple_form_for [:clinic_management, @clinic, @position], url: wizard_path, method: :put, remote: true do |f| %>
  <%= f.input :bill_authorization, collection: bill_authorization_options %>
  #etc etc
<% end%>

您可能希望在JS文件中添加一些错误消息(现在它调用相同的JS并在字段名称下呈现错误,在这种情况下可能会或可能不会是您想要的)。

根据您的使用情况,使用其中一个JS框架进行此类事情(如steps.js)也可能更容易。我没有,因为我比JS更了解ruby,但对于其他人来说,它也是一个选择。