Button_to no e-mail não publicado

VEJA ATUALIZAÇÃO para evolução desta pergunta

No meu site, cada usuário tem um painel onde pode clicar em um link para ACEITAR ou RECUSAR uma solicitação. Dependendo do que é clicado, o registro de Solicitação é PATCHADO com o status relevante. Para facilitar para os usuários, estou tentando incorporar esse painel em um e-mail para eles, para que eles nunca precisem acessar o site diretamente; pense em um email parecido com este:

Olá,

Você tem as seguintes solicitações, clique em ACEITAR / DECLINAR ao lado da solicitação para fazer isso

Solicitação A: ACEITAR, DECLINARSolicitação B: ACEITAR, DECLINAR

....

A única maneira de fazer isso funcionar até agora foi ter um conjunto paralelo de rotas GET para os links usados no email, em comparação com as rotas PATCH dos links usados no painel do site real.

Querendo saber se há uma maneira melhor de fazer isso?

Rotas

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 no email

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

Link no painel do site

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

ATUALIZAR

Ok tentei obutton_to para gerar um formulário para o POST para evitar o uso de GET para fazer o POST, como foi a solução "irregular" acima, ainda não funcionando ...

Rotas:

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

Visualização de mala direta:

<%="#{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"}" %>

Também fiz um elemento de inspeção no e-mail para confirmar que obutton_to estava gerando o código apropriado:

<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>

Nas configurações de mala direta, defino o host corretamente como meu nome de domínio. Portanto, quando recebo o email e clico no botão, sou levado a/inventories/2037/decline apropriadamente, mas ainda recebo o erro, porque aparentemente os logs dizem que ainda estou tentando buscar o GET ... por que isso?

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

questionAnswers(2)

yourAnswerToTheQuestion