Jquery rails,通过ajax请求,获得成功
我有以下建议:Jquery rails,通过ajax请求,获得成功,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,我有以下建议: <%= text_field_tag 'group_name','',:placeholder => "#{t "placeholder_group_name"}", :class => "group_name" %> 似乎我通过键入$this.val错误地访问了text_field_标记中的文本。我可以访问带有类“组名称”的文本字段标记中的文本吗 编辑:回复 <div id="content"> <script src="//code
<%= text_field_tag 'group_name','',:placeholder => "#{t "placeholder_group_name"}", :class => "group_name" %>
似乎我通过键入$this.val错误地访问了text_field_标记中的文本。我可以访问带有类“组名称”的文本字段标记中的文本吗
编辑:回复
<div id="content">
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<script>
$( function() {
$( ".group_name" ).on("onchange",function(e) {
$.ajax({
url: '<%= group_name_exists_groups_path %>',
data: {group_name: $(this).val()},
success: function(){
alert('success');
},
error: function(){
alert('failure');
}
});
});
});
</script>
<%= text_field_tag 'group_name','',:placeholder => "#{t "placeholder_group_name"}", :class => "group_name" %>
</div>
def group_name_exists
logger.info "giveHint #{params}"
group_name = params[:group_name]
group = Group.find_by_sql("SELECT DISTINCT gk1 FROM groups WHERE gk1 = '#{group_name}';")
if group.empty?
succ = false
else
succ = true
end
respond_to do |format|
format.js { render :json => {:success => succ}}
end
end
但我总是抓住一个失败,这意味着我抓住了一个错误。虽然我发送了success=>true但您有两个错误:
首先,val是一个函数,因此您应该调用$this.val以获取所选选项
第二,您得到的错误是,默认情况下ajax请求是format.js,而不是format json,因此您的控制器正在查找组_name_exists.js.erb,该组不存在。您应该用一些东西响应format.js,或者创建该视图。Rails试图显示一个不存在的模板?你可以检查你的控制器对json的响应。我知道,但我不明白他为什么抱怨,我正在呈现json,所以它应该是好的,不是吗?我尝试了:format.js{render:json=>{render:success=>false}它仍然抱怨,或者,如果我想在ajax中捕获一个success=>false,那么我应该如何响应?相应的tempalte是否存在?错误是什么?我不需要相应的模板,因为我用JSON响应格式。如果我说的不起作用,请发布您的实际代码。您发布的代码应该会导致语法错误,因为您缺少结尾。而且,如果缩进正确,会容易得多。
An ActionView::MissingTemplate occurred in groups#group_name_exists:
Parameters: {"group_name"=>"undefined", "action"=>"group_name_exists", "controller"=>"groups", "locale"=>"en"}
<div id="content">
<script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<script>
$( function() {
$( ".group_name" ).on("onchange",function(e) {
$.ajax({
url: '<%= group_name_exists_groups_path %>',
data: {group_name: $(this).val()},
success: function(){
alert('success');
},
error: function(){
alert('failure');
}
});
});
});
</script>
<%= text_field_tag 'group_name','',:placeholder => "#{t "placeholder_group_name"}", :class => "group_name" %>
</div>
def group_name_exists
logger.info "giveHint #{params}"
group_name = params[:group_name]
group = Group.find_by_sql("SELECT DISTINCT gk1 FROM groups WHERE gk1 = '#{group_name}';")
if group.empty?
succ = false
else
succ = true
end
respond_to do |format|
format.js { render :json => {:success => succ}}
end
end