问题是我有一个查询,查看我的emp_id文本框,一旦输入内容,它会搜索与emp_id相关的信息,在我的另一个表中,它会搜索其被调用的ID ..如果emp_id与id匹配在我的视觉模型中,它将填充他们的名字和姓氏。我想知道如果没有emp_id匹配我的可视化模型中的id,我怎么能显示错误....到目前为止,我得到一个nomethod错误为app / controller /中的nil类的名字populate_form,我不知道为什么我的猜测是什么时候它发现没有匹配它认为它是一个零并且什么也不返回..我有点失落任何帮助都将非常感谢!!
这是我的视觉模型
class Visual < ActiveRecord::Base
establish_connection :vtest
self.table_name = 'employee'
Visual.inheritance_column = 'inheritance_type'
belongs_to :user
def emp_matches(x)
(x.id.to_i == self.id.to_i ? true : false)
end
end
这是我的用户控制器,其中包含my populate form方法
class UserController < ApplicationController
def populate_form
@visual = Visual.find_by_id(params[:emp_id])
if @emp_matches == 'False'
respond_to do |format|
format.json { render json: @user.errors, status: :unprocessable_entity, flash[:error] => "Error No ID found." }
end
else
@visual = Visual.find_by_id(params[:emp_id])
@emp_first_name = @visual.first_name
@emp_last_name = @visual.last_name
render :json => {
:emp_first_name => @emp_first_name,
:emp_last_name => @emp_last_name
}
end
end
这是我的观点..
<div class='row form-group'>
<div class='col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5 text-right'>
<%= f.text_field :emp_id, tabindex: 1, id: 'emp_id', autofocus: true, placeholder: t( 'login_label' ), class: 'form-control' %>
</div>
</div>
<div class='row form-group'>
<div class='col-xs-8 col-xs-offset-2 col-sm-6 col-sm-offset-3 col-md-4 col-md-offset-4 col-lg-2 col-lg-offset-5 text-right'>
<%= f.text_field :emp_first_name, tabindex: 1, id: 'emp_first_name', autofocus: true, placeholder: t( 'login_label' ), class: 'form-control' %>
</div>
</div>
这是我的App.js
$(document).ready(function(){
$('#emp_id').change(function() {
var url = "/user/populate_form?emp_id="+$(this).val();
$.getJSON(url, function(data) {
if(!(data.emp_first_name === undefined))
$('#emp_first_name').val(data.emp_first_name);
if(!(data.last_name === undefined))
$('#emp_last_name').val(data.emp_last_name);
});
}
);
});
我的桌子
视觉模型
Table is called Employee
ID
emp_first_name
用户模型
Table is called User
emp_id
所以看起来像这样?
$(document).ready(function(){
$('#emp_id').change(function() {
var url = "/user/populate_form?emp_id="+$(this).val();
$.getJSON(url, function(data) {
if(!(data.emp_first_name === undefined))
$('#emp_first_name').val(data.emp_first_name);
if(!(data.last_name === undefined))
$('#emp_last_name').val(data.emp_last_name);
$.ajax({
type: 'POST',
url: "/user/populate_form?emp_id="+$(this).val();
})
.done(function (response) {
if (response.success == 'success') {
//alert('success');
} else {
//alert('fail');
}
}).error(function(data) {
//show json error response from the server
$("#show_error").html("<span class='text-danger' ><b>" + data.responseText + "</b></span>");
});
});
}
);
});
答案 0 :(得分:0)
使用。error方法
的这种形式的ajax请求 .ajax({
type: 'POST',
url: "/user/populate_form?emp_id="+$(this).val();
})
.done(function (response) {
if (response.success == 'success') {
//alert('success');
} else {
//alert('fail');
}
}).error(function(data) {
//show json error response from the server
$("#show_error").html("<span class='text-danger' ><b>" + data.responseText + "</b></span>");
});
控制器中的
format.js { render :json => @user.errors.full_messages.join(' '), :status => 400 }