Rails:电子邮件确认邮件程序中的RESTful(PUT)URL
问题描述:
从头开始编写我自己的电子邮件确认。努力如何为我的confirmations_controller
生成适当的路由。Rails:电子邮件确认邮件程序中的RESTful(PUT)URL
新用户会收到一封电子邮件,其中会显示链接回应用程序以验证地址。
我的想法是它应该是PUT操作,因为它会更改数据库。但是,点击电子邮件中的链接将不会提交“放入”操作...或将它?我必须失去一些东西,抛弃自己的无知。
#config/routes.rb
...
resources :confirmations, only: [:update]
confirmation_url(user.email_token)
产生有效的URL:http://localhost:3000/confirmations/ArELEOejYlqbRXdJPavhrp
但点击链接时,它是由应用程序收到一个“让”的要求。
我该如何处理?
答
你的电子邮件格式是什么?如果它的纯文本,它将是一个GET。这本身不是更新激活页面的问题。你也可以打开一个页面(使用GET),让他们点击一个按钮进行最终提交(并不少见)。
但是,通过GET更新不会打扰我这个特定的功能。
例如:
# routes.rb
get 'confirmations/:id/confirm' => 'Confirmations#confirm'
# confirmations.rb
class ConfirmationsController < ApplicationController
def confirm
# handle the get data here (switch aa flag for the email account)
end
end
它是**纯文本**。我打算添加HTML,但总会有一个文本版本('多部分'MIME),所以我想我应该准备好处理'GET'请求,不管?!?那么,如果我只是想打破纯粹的REST风格,我该如何/在哪里处理GET更新?也许在编辑行动?但这很笨拙'/ confirmations/abcdefghi .../edit'。 – Meltemi
或者如果他们回应我在#update操作中用'PUT'处理的'HTML'电子邮件。否则我链接到一个'/ edit'页面,在那里他们可以点击'PUT'链接?要么...? – Meltemi
增加了一个例子。是/编辑看起来有点奇怪,你应该指出一些人不喜欢HTML电子邮件(所以用纯文本计数)。你可以自己定义自己的行为(参见示例)。使用GET的IMO不应该是一个问题(在这个特定的情况下)。 – Roger