从电子邮件更新Rails中的单个属性

时间:2014-11-10 15:10:02

标签: ruby-on-rails routes

我在尝试更新我的网络应用程序的属性时遇到了一些问题(没有路由匹配[GET]“/ admin / justifications / 19 / approve”)。

用户应批准或拒绝其电子邮件的许可...

管理员/ justifications_controller.rb

class JustificationsController < BaseController
before_action :find_justification

 # PATCH/PUT /admin/justifications/1/approve
def approve
  @justification.approve
  @justification.create_activity :approve, owner: current_user, recipient: @justification.user
  redirect_to request.referer
end

# PATCH/PUT /admin/justifications/1/reject
def reject
  @justification.reject
  @justification.create_activity :reject, owner: current_user, recipient: @justification.user
  redirect_to request.referer
end

路由

scope :admin, module: :admin do
  resources :justifications, except: :all do
    member do
      patch :approve
      patch :reject
    end
  end
  ...
end

这在我的网页上效果很好,但是当用户尝试打开发送到他们电子邮件的生成链接时会中断。

这里有什么东西不见了吗?

任何帮助都会很棒。 Thnks !!

2 个答案:

答案 0 :(得分:2)

您的approve操作仅可通过PATCHPUT获取,您在电子邮件中输入的链接会通过GET

发送请求

在SO中有很多问题询问如何从您在电子邮件中发送的链接发送与GET不同的方法,答案是:这是不可能的。您必须打开GET操作才能通过电子邮件链接访问。

答案 1 :(得分:0)

无法原生添加发送PATCH请求的链接--Rails使用data-method属性和一些聪明的javascript来伪造PATCHPUT和{ {1}}请求。

然而,这仅在客户端加载DELETE时才有效,这是有问题的,因为许多电子邮件客户端甚至webmail客户端出于安全原因阻止运行javascript的电子邮件。

您需要做的是添加jquery-ujs路线。