所以我对Rails相当新。
Heres是我的问题:
我的coffeescript中有一个Ajax调用到租户模型,编辑页面。
$("#tenant_tenantbuildinginfo").change ->
$.ajax
url: "/buildings/getgst",
dataType: "json",
data: 'buildinginfo' : $(this).val(),
success: (data) ->
console.log data
$("#tenant_gst").val data
error: (data) ->
console.log 'error'
return false
因此,这个ajax调用的想法是从楼宇控制器中的方法返回一个税率,如“5.6”(完美地运作)......
def getgst
d { 'gets fired' }
s = Building.get_gst_for_building(params[:buildinginfo])
d { s.to_s('F') }
@var = s.to_s('F')
respond_to do |format|
format.json { render json: @var }
end
end
d {}行是记录器,这就是我知道函数被调用并返回正确值的原因。 很好,到目前为止,Ajax调用工作正常。但是,现在我的问题是在success函数中解析或呈现返回值。
success: (data) ->
console.log data
$("#tenant_gst").val data
这部分AJAX调用在我的控制台中返回“undefined”,这真的很奇怪,因为在我的控制器操作中我将@var渲染为json而ajax调用需要json。
感谢任何帮助,非常感谢!
答案 0 :(得分:1)
undefined表示数据变量未定义。首先,json格式要求你以key:value格式返回答案,所以你应该选择例如:
控制器响应中的 format.json { render json: { "gst": @var } }
你正在使用错误的coffeescript,因为成功和错误的方法被传递给数据变量,你可以试试&在这里查看它如何解析为JS:http://js2coffee.org/
你可能意味着什么
$("#tenant_tenantbuildinginfo").change ->
$.ajax
url: "/buildings/getgst",
dataType: "json",
data: 'buildinginfo' : $(this).val()
success: (data) ->
console.log data
$("#tenant_gst").val data
error: (data) ->
console.log 'error'
return false
(注意行$("#tenant_gst").val data
末尾没有逗号)
其次,在jQuery调用中引用error / success responses时,我宁愿尝试方法链。:
$("#tenant_tenantbuildinginfo").change ->
$.ajax(
url: "/buildings/getgst"
dataType: "json"
data:
buildinginfo: $(this).val()
).success( (data) ->
console.log data
$("#tenant_gst").val data
).error( (data) ->
console.log "error"
)