undefinierte Methode `protect_against_forgery? ' für # <# <Klasse: 0x0

Ich habe den folgenden Code in meiner routes.rb-Datei.

resources :users  do
  member do
    get :following,:followers
  end
  collection do
    put :activate_email
  end
 end

Und ich habe einen Benutzer-E-Mail-Aktivierungslink wie diesen:

<%= link_to "Activate",activate_email_users_url(email_token: @user.email_token),method: :put  %>

Wenn ich auf den Aktivierungslink klicke, ist dies die URL, die generiert wird

 http://localhost:3000/users/activate_email?email_token=WWNvMN-r_lXgovrQiDlSSQ

Update: Ok, also ich glaube ich weiß was das Problem ist. Wenn ich mir die HTML-Quelle der Aktivierungs-E-Mail in meinem Google Mail-Konto ansehe, die link_to enthält, gibt es keine

data-method='put'
. Das scheint also das Problem zu sein. Es wird immer eine Standard-GET-Anforderung anstelle von PUT gesendet. Dies ist meine Datei user_mailer / registration_confirmation.html.erb

  <%= javascript_include_tag "application" %>
</head>

Bitte klicken Sie auf den folgenden Link, um Ihre E-Mail zu aktivieren. <% = Link_to "Activate", activate_email_users_url (email_token: @ user.email_token), method:: put%>

Dies gibt den folgenden Fehler:

undefined method `protect_against_forgery?' for #

So , the code <%= javascript_include_tag "application" %> is causing this error. Is there any way around this ?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage