fel*_*pes 3 jquery coffeescript ruby-on-rails-3
我正在尝试使用coffeescript和jquery做一篇文章,但是我的脚本没有处理成功回调。
* cards_controller.js.coffee *
if $('form').attr('action') == '/cards' alert "Hey ho" $('#add_card').click (e) ->
e.preventDefault()
$.ajax '/cards',
type: 'PUT' #Tried POST also
dataType: 'json'
error: (jqXHR, textStatus, errorThrown) ->
console.log textStatus
success: (res) ->
console.log "Card name: " + data.card.code + "\nPoints: " + data.points
complete: (jqXHR, textStatus) ->
console.log "Status: " + textStatus
Run Code Online (Sandbox Code Playgroud)
index.html.erb
<%= form_tag url_for(:controller => 'cards', :action => 'create'), :remote => true %>
Run Code Online (Sandbox Code Playgroud)
生成的javascript是以下代码:
(function() {
if ($('form').attr('action') === '/cards') {
alert("Hey ho");
$('#add_card').click(function(e) {
e.preventDefault();
return $.ajax('/cards', {
type: 'POST',
dataType: 'json',
error: function(jqXHR, textStatus, errorThrown) {
return alert(textStatus);
},
success: function(res) {
console.log("Card name: " + data.card.code + "\nPoints: " + data.points);
return $('#card-list > tbody:last').append('<tr>test</tr><tr>uauauiua</tr>');
},
complete: function(jqXHR, textStatus) {
return console.log("Status: " + textStatus);
}
});
});
}
}).call(this);
Run Code Online (Sandbox Code Playgroud)
* cards_controller.rb *
def create
card = Card.find_by_code(params[:code])
if card && card.user.nil?
current_user.add_card(card)
else
return render :status => 401, :json => { :message => "O cartão não existe ou já está cadastrado"}
end
respond_to do |format|
format.js { render json: { :card => card, :points => card.card_business_points.sum("points") } , content_type: 'text/json' }
end
end
Run Code Online (Sandbox Code Playgroud)
该请求成功发送到控制器,并且卡已正确创建。问题在于,在Chrome上调试似乎无法通过回调进行处理,也无法记录日志。
请有人帮忙吗?
我只是想出了问题所在。
在我的coffeescript中,使用jQuery ajax函数进行提交时,我忘了在数据字段中添加要提交的内容。
最后的脚本与此类似:
(document).ready ->
if $('form').attr('action') == '/cards'
$('#add_card').click (e) ->
e.preventDefault()
$.ajax '/cards',
type: 'POST'
dataType: 'json'
data: { code: $("#code").val() }
error: (jqXHR, textStatus, errorThrown) ->
alert textStatus
success: (data, textStatus, jqXHR) ->
console.log "Card name: " +
data.card.code + "\nPoints: " + data.points
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助,当我没有传递data参数时,我无法弄清楚为什么没有调用回调。
问候!
| 归档时间: |
|
| 查看次数: |
10632 次 |
| 最近记录: |