当用户单击按钮时,将其电子邮件存储在其他页面上

时间:2019-03-02 09:24:46

标签: javascript html ruby-on-rails

当用户单击某个页面上的(下载)按钮时,我想存储他/她的电子邮件。

这是按钮本身的代码:

<div class="my_music_download_2" id="try">
  <a class="fas fa-file-download fa-3x" href="<%= my_music.download %>" download></a>

<script> 
document.getElementById("try").addEventListener("click", function(){ 

}); 
</script> 


</div>

我现在不需要在函数中键入什么内容。

我使用了devise进行身份验证。

我的github页面:github.com/Maartensdb/steven-de-baecke/tree/fixes

2 个答案:

答案 0 :(得分:0)

您可以在会话中存储用户的电子邮件地址,并在其他页面上接收它。

// Store
sessionStorage.setItem("lastname", "Smith");
// Retrieve
document.getElementById("result").innerHTML = sessionStorage.getItem("lastname");

答案 1 :(得分:0)

假设您的链接位于类似以下的循环中:

 <% MyMusic.each.do |my_music| %>

您可以设置视图:

<%= link_to download_path(my_music_id: my_music.id), remote: true do %>
Download
<% end %>

和控制器:

def download
  @my_music = MyMusic.find(params[my_music_id])
  @my_music.update_attributes(email: current_user.email) 
  send_data @my_music.download.read, filename: @my_music.download
end

但这将为每个my_music存储最后一次下载它的用户。如果您想存储谁下载了您需要创建的联接表(例如,users_downloads,具有user_id和my_music_id列),请设置适当的关联。