Rails路由未击中取消订阅控制器操作

时间:2019-12-09 14:52:26

标签: ruby-on-rails controller routes ruby-on-rails-5 rails-routing

我关注了these instructions,但现在遇到了问题。当我单击电子邮件中的unsubscribe_url时,出现以下错误:

No route matches [GET] "/newsletter_subscriptions/unsubscribe/b25a63f6e525deccd6bcd9e896c3321f"

这是我设置路线的方式:

put 'newsletter_subscriptions/unsubscribe/:unsubscribe_hash' => 'newsletter_subscriptions#unsubscribe', :as => 'unsubscribe'
resources :newsletter_subscriptions

为什么我实际使用[GET]时会收到put错误消息?

我的NewsletterSubscriptionsController中有

def unsubscribe
  @newsletter_subscription = NewsletterSubscription.find_by_unsubscribe_hash(params[:unsubscribe_hash])
  @newsletter_subscription.update_attribute(:active, false)
end

应该在我的控制器中执行unsubscribe操作的链接是:

<%= link_to 'Unsubscribe', unsubscribe_url(@unsubscribe_hash), method: :put %>

当我使用浏览器开发工具检查链接时,它对我来说是正确的:

<a rel="nofollow" data-method="put" href="http://localhost:3000/newsletter_subscriptions/unsubscribe/b25a63f6e525deccd6bcd9e896c3321f">Unsubscribe</a>

我想知道为什么链接没有达到我控制器的取消订阅动作。如果有人可以朝正确的方向推动我,那就太好了。非常感谢!

0 个答案:

没有答案