JQuery和Rails…使用AJAX与HTML标头一起提交

问题描述 投票:0回答:1

这个有点独特...

我有一系列复选框图像,单击它们时,表单使用以下Javascript提交...

$('#pin_rose').simpleImageCheck({
  image: '/images/rose.png',
  imageChecked: '/images/one.png'
   })
  .change(function() {
    var c = 'checked';
    if (!$('#pin_rose').is(':checked')) {
      $(this).closest('form').submit();
    }
    $(this).closest('form').submit();

});

但是,我希望表单在Rails 3环境中使用Ajax提交,以免重新加载页面...

在我的_edit.html部分中,我有以下内容:

<%= form_for([@posts, @pin], :html => {:multipart => true}, :remote => true) do |f| %>

在我的pins_controller.rb控制器中,我具有:

def update
...
    respond_to do |format|
      if @pin.update_attributes(params[:pin])
        format.html { redirect_to @post }
        format.js
      else
        format.html { redirect_to '/static_pages/login' }
        format.js
      end
...
end

然后在我的update.js.erb中,我有

$("#new_pins").append("<h1>new pin added</h1>")

问题是,当我单击图像时,将提交表单,并添加数据,但是它将重定向,而不是使用ajax。

是否有一种方法可以使rails覆盖$(this).closest('form').submit(); Javascript调用,以便不将其提交为html?

我知道我可以用Javascript进行标准的ajax调用,但是不希望这样做,因为将来我需要拉对象(“现在添加的新销”才刚刚使用。]

UPDATE:跑耙路线...

           users POST /users(.:format)                           users#create
        new_user GET  /users/new(.:format)                       users#new
            user GET  /users/:id(.:format)                       users#show
       post_pins POST /posts/:post_id/pins(.:format)             pins#create
    new_post_pin GET  /posts/:post_id/pins/new(.:format)         pins#new
   edit_post_pin GET  /posts/:post_id/pins/:id/edit(.:format)    pins#edit
        post_pin PUT  /posts/:post_id/pins/:id(.:format)         pins#update
           posts POST /posts(.:format)                           posts#create
        new_post GET  /posts/new(.:format)                       posts#new
       edit_post GET  /posts/:id/edit(.:format)                  posts#edit
            post GET  /posts/:id(.:format)                       posts#show
                 PUT  /posts/:id(.:format)                       posts#update
           login      /login(.:format)                           static_pages#login
           about      /about(.:format)                           static_pages#about
                      /posts(.:format)                           posts#new

第二次更新

主要问题是$('#myform').submit();提交为html。有没有一种方法可以将其更改为format.js?我也尝试了一下,但无济于事:

<%= f.check_box :rose, :onchange => '$(this.form).submit();' %> 
jquery ruby-on-rails ajax jquery-events
1个回答
0
投票

我会明确命名表单,即:

<%= form_for([@posts, @pin], 
   :remote => true, 
   :html => {:multipart => true, :id=>'myform'} ) do |f| %>

然后使用您的JavaScript:

$('#myform').submit();
© www.soinside.com 2019 - 2024. All rights reserved.