0

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

路线.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

新的.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

4 回答 4

2

你必须以某种方式传递 :id

validate_email_user_path user.id

或者

validate_email_user_path user
于 2013-08-05T21:31:08.173 回答
2

如果您只想传递电子邮件而不是现有用户,那么我认为您需要更新您的路线。

这:

get 'validate_email', on: :member

应该

get 'validate_email/:email', on: :collection

在用户“集合”中,您不需要将用户/用户 ID 传递给 _path 帮助程序。您的路线的实际 URL 将是 /users/validate_email 而不是 /users/:id/validate_email

路由的 :email 部分将使 params[:email] 在您的控制器方法中可用。

于 2013-08-05T21:44:12.323 回答
0

您需要为用户提供 URL 帮助程序。

于 2013-08-05T21:30:46.890 回答
0

这不是您问题的直接答案,但可能会有所帮助。

你知道 client_side_validations gem 吗?我认为您可以使用它,而不是自己实现所有内容。它可以在 github 上找到。

于 2013-08-05T22:39:47.113 回答