路由错误:没有路由匹配

时间:2013-08-05 21:29:25

标签: ruby-on-rails

即使我认为我的控制器中存在该操作,我也会收到路由错误。

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

我做错了什么?

4 个答案:

答案 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上找到。