如何使用jQuery UJS在选择框的更改事件在Rails中触发后提交表单?如何使用jQuery UJS在Rails中选择框的更改事件触发后通过AJAX提交表单?
我的看法是这样的:
<% for perm in @permissions %>
<%= form_for [@brand,perm], { :remote => true } do |f| %>
<tr id="permission_<%= perm.id %>">
<td><%= perm.configurable.name %></td>
<td><%= f.select :action, ['none', 'read', 'update', 'manage'] %></td>
</tr>
<% end %>
<% end %>
非常简单。我的控制器就像这样:
class PermissionsController < ApplicationController
before_filter :authenticate_user!
respond_to :html, :js
load_and_authorize_resource :brand
load_and_authorize_resource :permission, :through => :brand
def index
end
def update
@permission = Permission.find(params[:id])
@permission.update_attributes(params[:permission])
end
end
而且在我的application.js:
// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
$(function() {
$("#permission_action").change(function() {
this.form.submit(); // This needs to be an AJAX call, but how?
});
})
请注意,表单提交火就好了。但它正在做一个常规帖子,而不是一个AJAX提交。当我在表单上放置一个提交按钮并使用它时,AJAX提交工作正常。我需要更改:
this.form.submit();
给一个AJAX调用,但我不知道如何。谁能帮忙?
感谢雨果。我实际上今天观看了这个截屏视频,并尝试了这个例子。为了引用表单,我使用了“this.form.submitWithAjax();”因为我试图从选择框的更改事件中引用表单。我一直在收到“submitWithAjax不是函数”。 – AKWF 2010-11-16 21:13:41
我无法尝试此操作,但可以在submitWithAjax定义中将this.submit(....)这一行更改为this.form.submit(....)。也许你试过idk。让我知道。 – Hugo 2010-11-16 21:17:15
是的,这对我来说没有任何结合。这非常非常令人沮丧。我终于没有得到这个工作: $( “#permission_action”)改变(函数(){ \t \t $阿贾克斯({ 类型: “PUT”, 网址:this.form.action, 数据: “许可[动作] =” + $( “#permission_action”)VAL() }); 返回假; }); 但它只适用于第一线!屏幕上的每一行都带有一个名为“permission_action”的选择框。我没有意识到jQuery只会默认绑定到特定名称的第一个元素。 – AKWF 2010-11-16 21:25:04