通过电子邮件中的链接调用Rails更新操作

时间:2012-10-10 04:54:04

标签: ruby-on-rails-3

我想通过调用ActivationController中的更新操作来激活注册的用户。

在我的activation.html.erb文件中,我有这个:

<html>
  <body>
    To activate your account, please click the link below:

    <%= link_to "Click Here", activation_url(@user.activation_token), method: :put %>
  </body>
</html>

rake routes看起来像这样:

 activation PUT    /activations/:id(.:format)          activations#update

但是当我在电子邮件中点击此链接时,我收到此错误:

No route matches [GET] "/activations/icrvr5uNahnA5fpVjVTDEw"

帮助,

麦克

更新

根据下面的答案,我改变了我的路线:

activations_validate GET  /activations/validate(.:format)  activations#validate

但是现在,如果路线中没有:id,我该如何从URL中获取params [:id]?

1 个答案:

答案 0 :(得分:0)

在您的路线文件中,尝试将其设为GET而不是PUT,并将方法更改为activations#validate(显然也在控制器中更改),然后在控制器的validate方法中,检查{ {1}}针对您的验证逻辑,如果成功,则更新(激活)用户并重新路由到任何地方。