当我添加link_to时,Rails不呈现ajax响应

时间:2016-06-28 03:00:34

标签: javascript ruby-on-rails ajax

我有这个控制器响应表单发出的ajax调用 控制器:

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>");

此响应不起作用,每次单击“提交”按钮时都没有任何反应,当我查看rails或chrome控制台时,没有错误消息。 但我试图删除link_to标记,并开始工作正常。如何使用link_to获得响应?

1 个答案:

答案 0 :(得分:0)

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

帮助您调试ajax响应的另一个技巧是删除所有jquery和ERB代码,以确保您的响应甚至被渲染。将您的回复js.erb更改为:

console.log('successful response');

尝试这两件事,如果您的日志文件中没有任何内容且Chrome控制台中没有“成功响应”,请告诉我们,我们可以尝试其他操作。