如何在Rails上提交模式表单后更新DOM

我正在使用Twitter Bootstrap尝试使用模态表单来处理我的注册过程。 我可以获取提交表单,关闭模式,一切正常,但DOM不会不引人注意地更新。

用户登录后,导航栏(使用部分呈现并具有ruby)不应再具有“注册”链接,并且应获取“注销”链接。

由于我无法在管理表单提交的coffeescript文件中使用render ,如何重新呈现导航栏以便反映成功注册/模式表单提交?

模态forms(HAML):

 = simple_form_for @user, remote: true, html: {data: {type: 'html'}, class: 'form-horizontal'} do |f| %div.modal-header %button.close{"aria-hidden" => "true", "data-dismiss" => "modal", :type => "button"} × - if @user.errors.any? #error_explanation %h2= "#{pluralize(@user.errors.count, "error")} prohibited this user from being saved:" %ul - @user.errors.full_messages.each do |msg| %li= msg %div.modal-body =render 'form', f: f %div.modal-footer = f.button :submit, name: 'Sign Up', class: "btn-primary", id: "new_user_button" =link_to "Sign In", signin_path 

jquery处理表单提交:

 $ -> $("#new_user_button").click -> valuesToSubmit = $("#new_user").serialize() $("#signup_modal").modal "hide" $.ajax( url: "/users" data: valuesToSubmit type: "POST" ).success (data, status) -> #update the DOM? 

控制器:

 def create @user = User.new(params[:user]) respond_to do |format| if @user.save #SignupMailer.new_subscriber(@user).deliver sign_in @user format.html { redirect_to root_path, notice: "Thank you for signing up!" } format.json { render json: @user, status: :created, location: @user } # format.js {'create'} else format.html { render action: "new" } format.json { render json: @user.errors, status: :unprocessable_entity } #format.js end end 

导航部分(HAML):需要在表单提交和模态关闭后不引人注意地更改这些元素!

 %ul.nav.nav-pills.pull-right -if signed_in? %li{:class => "#{'active' if current_page?(user_path(current_user))}"}=link_to "Your page", user_path(current_user) %li=link_to "Sign out", signout_path, :class => "#{'active' if current_page?(root_path)}" -else %li= link_to_modal 'Sign Up', new_user_path, :width=> "600", :height =>"400", :remote => true, :id => "new_user_link" %li=link_to "Sign In", signin_path, :class => "#{'active' if current_page?(root_path)}"