这个有点独特...
我有一系列复选框图像,单击它们时,表单使用以下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();' %>
我会明确命名表单,即:
<%= form_for([@posts, @pin],
:remote => true,
:html => {:multipart => true, :id=>'myform'} ) do |f| %>
然后使用您的JavaScript:
$('#myform').submit();