Rails自定义更新方法不会以jquery切换形式调用

时间:2015-05-15 14:59:07

标签: javascript jquery ruby-on-rails ruby-on-rails-4 model-view-controller

我有一个配置文件编辑表单,其中我有一个按钮,可以切换另一个表单来更改密码。

我的路线看起来像这样:

resource :profile do
  get '/password_edit' => 'profiles#password_edit', as: 'edit_password'
  patch '/password_update' => 'profiles#password_update', as: 'change_password'
end

自定义控制器方法:

def password_edit
  render partial: 'edit_password'
end

def password_update
  if @user.authenticate(params[:user][:current_password]) &&  @user.update_attributes(user_params)
    redirect_to root_url
  else
    render :edit
  end
end

形式:

<div class="password-edit">
<%= form_for @user, {url: '/change_password_profile'} do |f| %>
  <div class="password" style="display:none; height:320px;">
    <%= render partial: "password_form", locals: { f: f } %>
  <div>
    <%= f.submit "Update password", class: "btn btn-primary" %>
    <%= link_to "cancel and go back", admin_accounts_path, class: "btn btn-link" %>
  </div>
  </div>
<% end %>
</div>

profiles.js:

$(function(){
  $(".expand_password_edit_form").on("click", function(event){
    $(".password-edit").find('.password').slideToggle(400,
    function(){
      $('html, body').animate({
        scrollTop: $('.password').offset().top + $('window').height()
    }, 1000);
    });
  });
});

但是,当我单击“提交”按钮时,它将由更新操作处理,而不是由password_update处理。 我知道这是因为我通过js渲染这个形式,路线不会改变。

我该如何做到这一点?

0 个答案:

没有答案