电子邮件中的 Button_to 未发布

2023-12-27

请参阅此问题的演变的更新

在我的网站上,每个用户都有一个仪表板,他/她可以在其中单击链接来接受或拒绝请求。根据单击的内容,请求记录将使用相关状态进行修补。为了让用户更方便,我尝试将此仪表板嵌入到发给他们的电子邮件中,这样他们就不必直接访问该网站;想象一封如下所示的电子邮件:

你好呀,

您有以下请求,请单击请求旁边的“接受/拒绝”来执行此操作

  • 请求 A:接受、拒绝
  • 请求 B:接受、拒绝

....

迄今为止,实现此目的的唯一方法是为电子邮件中使用的链接设置一组并行的 GET 路由,而不是为实际网站仪表板中使用的链接设置 PATCH 路由。

想知道是否有更好的方法来做到这一点?

Routes

patch 'inventories/:id/accept', to: 'inventories#accept', as: 'lender_accept'
patch 'inventories/:id/decline', to: 'inventories#decline', as: 'lender_decline'
get 'inventories/:id/accept_email', to: 'inventories#accept', as: 'lender_accept_email'
get 'inventories/:id/decline_email', to: 'inventories#decline', as: 'lender_decline_email'

电子邮件中的链接

<%= "#{link_to 'ACCEPT', lender_accept_email_url(borrow), method: :patch} or #{link_to 'DECLINE', lender_decline_email_url(borrow)}" %>

网站仪表板上的链接

<%= "#{link_to 'ACCEPT', lender_accept_path(borrow), method: :patch} or #{link_to 'DECLINE', lender_decline_path(borrow), method: :patch}" %>

UPDATE

好的尝试了button_to生成一个 POST 表单以避免使用 GET 来执行 POST,就像上面的“不完整”解决方案一样,仍然不起作用...

Routes:

post 'inventories/:id/accept', to: 'inventories#accept', as: 'lender_accept'
post 'inventories/:id/decline', to: 'inventories#decline', as: 'lender_decline'

邮件视图:

<%="#{button_to 'YES', lender_accept_url(borrow), method: :post, id: "accept #{borrow.id}", style: "background-color:green; color: white; width: 40px; display: inline"} %>
<%="#{button_to 'NO', lender_decline_url(borrow), method: :post, id: "decline #{borrow.id}", style: "background-color:gray; width: 40px; display: inline"}" %>

我还对电子邮件进行了检查元素,只是为了确认button_to正在生成适当的代码:

<form action="inventories/2037/decline" method="post" target="_blank" onsubmit="return window.confirm(&quot;You are submitting information to an external page.\nAre you sure?&quot;);"><div><input style="background-color:gray;width:40px;display:inline" type="submit" value="NO"></div></form>
  <div>
    <input style="background-color:gray;width:40px;display:inline" type="submit" value="NO">
  </div>
</form>

在我的邮件程序设置中,我将主机正确设置为我的域名,因此当我收到电子邮件并单击按钮时,我会被带到/inventories/2037/decline适当地,但我仍然收到错误,因为显然日志说我仍在尝试获取...为什么会这样?

2014-08-17T06:18:03.206205+00:00 app[web.1]: ActionController::RoutingError (No route matches [GET] "/inventories/2037/decline"):

想知道是否有更好的方法来做到这一点?

Making GET请求是理想的解决方案。不要使用任何其他请求。它要么不受电子邮件客户端支持,要么可能会增加很大的安全漏洞。

大网站使用的是你的误解post/patch在电子邮件中请求执行此类操作。他们都使用get请求,它们包含一些令牌,当用户访问该网站时,该令牌会绑定/触发特定操作。

OK 尝试使用 Button_to 生成一个 POST 表单,以避免使用 GET 进行 POST,就像上面的“不完整”解决方案一样,但仍然不起作用。

显然,这是行不通的。没有railsJavaScript 文件。此外,即使你包含它也不会起作用,因为csrf-token令牌。 Rails 应用程序默认不允许外部表单提交。

我的建议是将用户发送到您的dashboard有一些额外的参数like www.example.com/dashboard?take_action=accept并使用 JavaScript 来触发所需的操作。这是最佳实践。这将避免您使用lender_accept请求为get.

更准确地说,不要这样做.

get 'inventories/:id/accept_email', to: 'inventories#accept', as: 'lender_accept_email'
get 'inventories/:id/decline_email', to: 'inventories#decline', as: 'lender_decline_email'

这不好。自从,get请求不适用于updating/deleting.

因为,你想链接这个actions进入你的email,你应该把dashboard带有一些额外参数的链接。现在,使用 JavaScript 执行accept/decline每当您看到传递到电子邮件的这些参数时,请执行操作。

More:

  • 我可以在电子邮件中同时添加“获取”和“发布”URL 链接吗 https://stackoverflow.com/questions/5416753/can-I-put-both-get-and-post-url-link-in-an-email

  • 是否可以从 HTML 电子邮件执行 HTTP POST? https://superuser.com/questions/382411/is-it-possible-to-perform-a-http-post-from-a-html-email

  • 是否可以从 Outlook 电子邮件中发送 POST 请求? https://stackoverflow.com/questions/6604791/is-it-possible-to-send-a-post-request-from-within-an-outlook-email

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电子邮件中的 Button_to 未发布 的相关文章

  • 如何让 Twilio 在hangup() 被触发时停止拨号?

    我一直在使用 twilio ruby gem 开发 Twilio 应用程序 但我陷入了一个部分 为呼叫构建 TwiML 响应 我拨打一些号码 以便他们也可以接听呼叫 def handle gather response Twilio Twi
  • 以 Rails 形式处理 MongoMapper EmbeddedDocument

    首先 我对一般编程和 Rails 都是新手 我选择 Rails 是因为它看起来是一种很容易上手的语言 对于我的项目 我将 MongoMapper 与 Rails 结合使用 我正在尝试以与文档相同的形式处理嵌入文档 我有以下模型 class
  • 查询,无法选择列数

    Tag joins quote tags group quote tags tag id order count desc select count tags id AS count tags id tags name Build quer
  • STI 在遗传类型之间发生变化。

    在我的模型中 我像这样使用 STI 车辆型号 vehicle rb class Vehicle lt ActiveRecord Base end 车型 car rb class Car lt Vehicle end 总线模型 bus rb
  • Python/curve_fit:无法通过初始化猜测传递数组

    我有这个函数来计算某种多项式 def pipoly df pj n np size pj p pj 0 for j in range 1 n p pj j df j return p pj应该是一个包含多项式系数的初始猜测的数组 因此 多项
  • 没有 Gem 的 Rails 分页

    我的任务是在不使用 gem 的情况下为 Rails 项目创建 前 10 个 后 10 个 最新 和 最旧 链接 在控制器中 我可以显示表中第一组 最新的 10 项 before action set page only index def
  • 如何使用 RSpec 测试 javascript 重定向?

    我正在使用 xhr post 与控制器交互 并且我期待重定向 在 js erb 中 我有 window location href address 手动测试 浏览器会正确重定向 我如何使用 RSpec 测试它 response should
  • Rails3 has_many 关系中子项计数的范围

    尝试在rails3中做一个范围 book has many chapters 我想要 range long 返回超过 10 章的书籍 如何最好地构建这个范围 不使用计数器缓存 thanks 这应该会让你继续 class Book scope
  • factory_girl + rspec 似乎并没有在每个示例后回滚更改

    类似于这里描述的问题 http rpheath com posts 411 how to use factory girl with rspec http rpheath com posts 411 how to use factory g
  • Rails 中的漂亮路径

    我有一个类别模型 我使用默认的脚手架来路由它resources categories 我想知道是否有办法改变路径 category id to category name 我补充道 match categories name gt cate
  • 从标记访问 json 属性 - gmaps4rails

    我正在升级到 gmaps4rails v2 我似乎无法从 javascript 访问标记 json 属性 这在我使用的先前版本 1 5 6 中有效 具体来说 内置控制器 users User all hash Gmaps4rails bui
  • 我可以用 Java 在邮件服务器上执行搜索吗?

    我正在尝试使用 Java 搜索我的 Gmail 使用 JavaMail 我可以通过消息搜索来执行消息 如下所示 Properties props System getProperties props setProperty mail sto
  • 合并两个ActiveRecord数组并按created_at排序

    books Book find all articles Articles find all 通过阅读来自http guides rubyonrails org layouts and rendering html http guides
  • 与heroku配合使用的统计引擎

    我有一个 Heroku Rails 应用程序 需要处理一些重要的数字 并且我需要使用像 R 这样的统计库 更糟糕的是 MatLab 我正在寻找以下任何问题的答案 是否有不需要二进制文件的功能齐全的统计包 GEM 是否可以将 R 二进制文件作
  • 如何监听第三方应用程序触发的数据库更改

    我需要将 Ruby on Rails 应用程序与第 3 方应用程序集成 该应用程序将共享一个公共 PostgreSQL 数据库 也就是说 Rails 应用程序和第 3 方应用程序将使用相同的 PG 数据库 是否可以在 Rails 应用程序中
  • 获取特定时区一天开始时的时间对象

    如何获取代表给定时区特定日期的一天开始时间的 ruby Time 对象 date Date today date to time in time zone America New York beginning of day 目前输出 gt
  • 将 Rails 更新到特定版本

    如何将 Rails 更新到特定版本 我的本地计算机上有 Rails 3 2 2 但我需要更新到版本 3 2 3 如果我执行gem update rails 将会更新到最新的3 2 6版本 我怎样才能做到这一点 gem install rai
  • Rails - 如何重写设计 SessionsController 以在用户登录时执行特定任务?

    使用 Devise 管理用户会话 注册 每次用户登录时 以及在他被 devise 重定向到连接的主页之前 我需要执行特定任务 例如 更新该特定用户的用户表中的某些字段 用户 我是否必须重写 devise SessionsController
  • 如何使用默认电子邮件客户端发送电子邮件?

    我想使用系统的默认电子邮件客户端 雷鸟 outlook 等 从 net windows 窗体应用程序发送电子邮件 我想预设主题和正文 我认为有一种方法可以通过向 Windows 资源管理器发送类似的内容来做到这一点 mailto 电子邮件受
  • 传递数组时在 C 中的函数参数中强制指定数组大小

    Context 在 C 中 我有一个以数组作为参数的函数 该参数用作该函数的输出 输出的大小始终相同 我会 让阅读代码的人清楚所需的大小 不过它已经在函数注释中了 理想情况下 编译会输出警告或错误 这样我就可以在编译时而不是运行时防止出现问

随机推荐