即使我认为我的控制器中存在该操作,我也会收到路由错误。
routes.rb中:
Build::Application.routes.draw do
resources :users do
match 'users/:id' => 'users#username'
get 'validate_username', on: :member
get 'validate_email', on: :member
end
end
new.html.erb:
$("#user_email").on('blur', function(){
if($(this).val()!=""){
user_email = $(this).val();
$.ajax({
url:"<%=validate_email_user_path%>",
type:'GET',
data: {email: user_email},
success: function(data,status,xhr){
console.log(data);
alert(data.message);
});
佣金路线:
validate_email_user GET /users/:id/validate_email(.:format) users#validate_email
我做错了什么?
答案 0 :(得分:2)
你不得不传入:id
validate_email_user_path user.id
或
validate_email_user_path user
答案 1 :(得分:2)
如果您只想传递电子邮件而不是现有用户,那么我认为您需要更新路线。
此:
get 'validate_email', on: :member
应该是
get 'validate_email/:email', on: :collection
在用户'集合'中,您无需将用户/用户ID传递给_path帮助程序。您的路线的实际网址是/ users / validate_email而不是/ users /:id / validate_email
路线的电子邮件部分会使控制器方法中的参数[:email]可用。
答案 2 :(得分:0)
您需要向用户提供URL帮助程序。
答案 3 :(得分:0)
这不是您问题的直接答案,但可能有帮助。
你知道client_side_validations gem吗?我认为你可以使用它,而不是自己实现一切。它可以在github上找到。