2016-06-28 29 views
0

我有这个控制器是响应由形式 控制器由Ajax调用:Rails的不渲染Ajax响应时,我添加的link_to

if @invite.save 
    respond_to do |format| 
     format.html do 
     flash[:success] = "Friend invited with success" 
     redirect_to event 
     end 
     format.js 
    end 
else 
    flash[:danger] = "Failed to create invite" 
    redirect_to request.referer || events_path 
end 

形式:

<%= form_for(:invite, url: invites_path, method: 'post', html: {class: "form-inline"}, remote: true) do |f| %> 
    <%= f.hidden_field :event_id, :value => event_id %> 
    <div class="form-group"> 
    <%= f.label :email, "Email:" %> 
    <%= f.text_field :email, class: "form-control" %> 
    </div> 
    <div class="form-group"> 
    <%= f.submit "Invite", class: "btn btn-primary" %> 
    </div> 
<% end %> 

和响应:

$("#invites").append("<li> <%= @invite.attendee.email %> - Pending - <%= link_to 'Confirm your presence', confirmation_path(@invite), method: 'post'%> </li>"); 

这个回应不起作用,每次我点击提交按钮什么也没有发生,当我看着轨道或铬控制台没有错误信息。 但我试过去掉link_to标签,并开始正常工作。我如何获得响应与link_to一起工作?

+0

检查您的服务器日志。那里有错误吗? –

+0

服务器或Chrome控制台中没有错误,Petr。 –

回答

0

可能发生的情况是当您拨打@invite.save时出现错误,但您没有任何错误处理以查看出错情况。为了帮助您进行调试,请将该行更改为@invite.save!,以便在出现错误时收到异常,并且您应该在日志文件中看到详细信息。

帮助您调试ajax响应的另一个诀窍是删除所有jquery和ERB代码,以确保您的响应甚至能够呈现。更改你的回复js.erb简单地是:

console.log('successful response'); 

尝试这些两件事情,如果你在你的日志文件,并在您的Chrome控制台没有“成功应对”什么都没有,让我知道,我们可以尝试其他的东西。