我正在尝试进行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
部分是造成问题的原因,但我不确定。
答案 0 :(得分:1)
render :nothing => true
完全没有任何内容。如果您愿意,可以执行redirect_to :back
,这将使用户返回上次访问过的页面。
修改强>
尝试将:remote => true
添加到按钮中。
答案 1 :(得分:0)
通常当我遇到这种情况时,因为页面上有一个javascript错误导致event.preventDefault();
无法被调用。
答案 2 :(得分:0)
将:remote => true
添加到link_to使其正常工作。