Rails:在按钮点击时创建数据库记录

时间:2017-06-09 18:51:39

标签: ruby-on-rails

我有一个应用程序,用户可以通过电子邮件,短信和whatsapp通过点击按钮向他人发送唯一链接(明信片邀请其他人)。

该应用程序在卡片显示方法中有一个按钮,上面写着“通过电子邮件将卡片发送给朋友”,当人们点击它时,他们的电子邮件应用程序就会打开,他们可以发送链接:

<a href="mailto:?subject=Postcard for you!&body=You received a nice postcard! Check it out here: <%= u @sending_url %>">
    <button class="btn btn-large btn-default">Send card to a friend via email</button> 
</a>

链接/网址@sending_url由辅助方法创建,由网址和两个参数组成: inviter_id (这是当前用户的ID)和通过SecureRandom.uuid生成的令牌(@token)。我的应用生成的链接如下所示:

https://chaos-jadz.c9users.io/cards/3?inviter_id=1&token=b39f0488-de54-431e-a261-4da2feae6012

我现在要做的是:一旦用户点击此按钮,应用程序不仅应该打开电子邮件应用程序,还应该将令牌存储在数据库中。因此我有:

token.rb

class Token < ActiveRecord::Base
end

schema.rb

create_table "tokens", force: :cascade do |t|
    t.string   "token"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

我现在的问题是: 如何在卡片的show.html.erb中实现一个按钮,该按钮一旦点击就会在数据库中保存令牌(在我的卡片展示方法中生成),同时打开用户电子邮件应用程序?

1 个答案:

答案 0 :(得分:1)

如何使用inviter_id创建指向您服务器的链接(例如 - &gt; /users/1/invites),然后在invites_controller中,您会将用户重定向到带有令牌的电子邮件应用链接存储在数据库中。