0

这个有点独特……

我有一系列复选框图像,当它们被点击时,表单提交......使用以下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 调用,但我不希望这样做,因为我需要在将来提取对象(“添加的新引脚”只是现在)。

更新: 跑耙路线...

           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();' %> 
4

1 回答 1

0

我会明确命名表格,即:

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

然后在你的javascript中:

$('#myform').submit();
于 2012-05-28T23:52:20.587 回答