处理ajax的Rails方法抱怨没有模板?

我有一个subscriber#create方法,仅用于ajax提交给它(html表单使用data-remote="true"来执行Ajax。表单确实提交,数据最终在db中但方法抛出表示未找到模板的错误。

如何在Rails中将函数指定为Ajax处理程序? – 一个不必渲染模板等

这是方法的样子:

 class SubscribersController  params[:email], :ip_address => request.remote_ip, :referring_page => request.referer ) unless Subscriber.find_by_email(params[:email]) end end 

您应该正确处理respond_to中的呼叫。

 ... respond_to do |format| format.html format.js { :nothing => true } end 

事情吧,你应该回复一些东西 。 即使它是一个AJAX调用,你也应该发回一些东西让调用者知道创建是成功的。

 def create @subscriber = Subscriber.new(#your params) respond_to do |format| if @subscriber.save format.js { render :json => @subscriber, :status => :created, :location => @susbscriber } else format.js { render :json => @susbcriber.errors, :status => :unprocessable_entity } end end end 

此外,您不应该在控制器中执行unless Subscriber.find_by_email(params[:email]) 。 您应该只将validates_uniqueness_of :email添加到订阅服务器模型。

你想要像render :layout => !request.xhr?这样的东西render :layout => !request.xhr? 在您的控制器中,如果请求是ajax,这将阻止布局