【发布时间】:2013-05-21 14:19:57
【问题描述】:
我的 routes.rb 文件中有以下代码。
resources :users do
member do
get :following,:followers
end
collection do
put :activate_email
end
end
我有一个这样的用户电子邮件激活链接:
<%= link_to "Activate",activate_email_users_url(email_token: @user.email_token),method: :put %>
当我点击激活链接时,这是生成的 url
http://localhost:3000/users/activate_email?email_token=WWNvMN-r_lXgovrQiDlSSQ
更新:好的,所以我想我知道问题出在哪里。当我在我的 gmail 中查看包含 link_to 的激活电子邮件的 html 源时,没有
data-method='put'。所以这似乎是问题所在。它总是发送一个默认的 GET 请求而不是 PUT。 这是我的 user_mailer/registration_confirmation.html.erb 文件
<%= javascript_include_tag "application" %>
</head>
请点击以下链接激活您的邮箱
这会产生以下错误:
未定义的方法`protect_against_forgery?'为了 #导致了这个错误。有没有办法解决 ?所以,代码
【问题讨论】:
-
澄清一下,您想要
post还是put,因为您的问题中都有它们。 -
put用于我们要更新任何数据以便使用put您需要创建form而不是link和put作为方法 -
对不起..我想要 'put' 。但是“发布”也不起作用。刚刚编辑了问题。
-
试试
<%= link_to "Activate",activate_email_users_url(email_token: @user.email_token, _method: :put), method: :post %>和put :activate_email -
第一件事。您的控制台日志中给出了哪些错误。
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2