【发布时间】:2013-04-20 21:12:35
【问题描述】:
我正在制作一个注册表单,并想使用 jquery-validation 插件来检查 user_name 是否唯一。
路线:
resources :users, :only => [:show] do
collection do
post 'check_user_name_uniq'
get 'check_email'
get 'check_password'
end
控制器:
def check_user_name_uniq
render :json => User.valid_attribute?(:user_name, params[:user][:user_name]).to_json
end
javascript:
$("#new_user").validate({
debug: true,
rules: {
"user[user_name]": {
required: true,
remote: {
url: "/users/check_user_name_uniq", // check user_name uniqueness
type: "POST",
dataType: "json"
}
}
},...
我通过以下方式设置 X-CSRF-Token 标头:
$.ajaxSetup({
beforeSend: function(jqXHR) {
jqXHR.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
}
});
但是当我输入用户名时,仍然出现 401 错误:
Started POST "/users/check_user_name_uniq" for 192.168.157.1 at 2013-04-26 23:52:22 +0800
Processing by UsersController#check_user_name_uniq as JSON
Parameters: {"user"=>{"user_name"=>"tomwang"}}
Completed 401 Unauthorized in 36ms
我不知道为什么会发生这个错误,因为他们说标题可以解决它: WARNING: Can't verify CSRF token authenticity rails
【问题讨论】:
标签: ruby-on-rails-3 jquery-validate csrf