我在尝试更新我的网络应用程序的属性时遇到了一些问题(没有路由匹配[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 !!
答案 0 :(得分:2)
您的approve
操作仅可通过PATCH
或PUT
获取,您在电子邮件中输入的链接会通过GET
在SO中有很多问题询问如何从您在电子邮件中发送的链接发送与GET
不同的方法,答案是:这是不可能的。您必须打开GET
操作才能通过电子邮件链接访问。
答案 1 :(得分:0)
无法原生添加发送PATCH
请求的链接--Rails使用data-method
属性和一些聪明的javascript来伪造PATCH
,PUT
和{ {1}}请求。
然而,这仅在客户端加载DELETE
时才有效,这是有问题的,因为许多电子邮件客户端甚至webmail客户端出于安全原因阻止运行javascript的电子邮件。
您需要做的是添加jquery-ujs
路线。