为什么我的ajax调用呈现空白页面? (红宝石上导轨)

时间:2014-02-12 18:42:39

标签: ruby-on-rails ruby ajax

我正在尝试进行ajax调用,要么选择用户接收还是接收电子邮件。当用户单击按钮执行此操作时,我不希望页面重新加载,我只想向用户选择加入或不接收电子邮件的服务器发送消息。

JS:

opt: function(event) {
  event.preventDefault();
  var $this = $(this);
  $.ajax({
    type : 'PUT',
    url  : $this.attr('href'),
    dataType : 'html',
    success : function(html) {
      $this.addClass('active');
    }
  }); 
}

用户控制器中的opt操作:

def opt
  @user = User.find(params[:id])
  if @user.no_emails == false
    @user.no_emails = true
    @user.save
  else
    @user.no_emails = false
    @user.save
  end
  render :nothing => true, :status => 200
end

当我点击调用该功能的按钮时,它只会将我带到一个空白页面,我相信render :nothing => true, :status => 200部分是造成问题的原因,但我不确定。

3 个答案:

答案 0 :(得分:1)

你是对的。 render :nothing => true完全没有任何内容。如果您愿意,可以执行redirect_to :back,这将使用户返回上次访问过的页面。

修改

尝试将:remote => true添加到按钮中。

答案 1 :(得分:0)

通常当我遇到这种情况时,因为页面上有一个javascript错误导致event.preventDefault();无法被调用。

答案 2 :(得分:0)

:remote => true添加到link_to使其正常工作。