Javascript [Ruby on rails]按钮,在单击时执行Ruby操作

Javascript [Ruby on rails]按钮,在单击时执行Ruby操作,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,我是RubyonRails(和web开发)的初学者。我想做一个系统,当你点击按钮时,它会向网站管理员发送电子邮件 当我点击一个链接时,我可以发送一封电子邮件 在我的html页面中使用@announce.report(@announce.title),report方法在announce.rb中定义 我想我必须使用javascript,但我不知道如何在按钮函数中添加ruby代码@announce.report(@announce.title)。当我点击按钮时,我不想改变url,而是停留在同一个页面上

我是RubyonRails(和web开发)的初学者。我想做一个系统,当你点击按钮时,它会向网站管理员发送电子邮件

当我点击一个链接时,我可以发送一封电子邮件 在我的html页面中使用
@announce.report(@announce.title)
,report方法在announce.rb中定义

我想我必须使用javascript,但我不知道如何在按钮函数中添加ruby代码
@announce.report(@announce.title)
。当我点击按钮时,我不想改变url,而是停留在同一个页面上(只在点击“报告”后显示一条消息)

目前我已经做到了,但这并不是我真正想要的

<button type="button" onclick="alert('Reported')">

我已经查看了button_to和link_to,但这不是我想要的,因为我想保持在同一页面上,只显示一条小消息,并在单击后执行ruby操作


非常感谢您的帮助和再见。

听起来您想要一个ajax(因为您提到您不想更改页面),为您的
链接到
帮助者发布类似
发送邮件
的操作。因此,这意味着添加
remote:true
method:POST
作为选项。处理帖子的服务器端操作(
send_mail
,或您决定命名的任何操作)将准备一条消息并将其交给action mailer。下面是使用ActionMailer-准备简单示例的基本手册。
我认为您可以在当前模板所在的同一模板目录中准备一些不显眼的javascript文件,如
send_mail.js.erb
,以便在完成后提供确认消息,如“alert('Your mail was sent!”)。

您必须向服务器发送ajax请求,rails内置了一些函数来为您实现这一点

您可以通过链接或按钮执行此操作:

<%= button_to "Send Email to Webmaster",
  url: { controller: "announce", action: "send_to_webmaster" }, remote: true %>

这将向您的
AnnouncesController
中的
send\u to\u网站管理员
操作发送JS请求。将
remote
设置为true将告诉rails停止其默认行为,并向服务器发送ajax请求(即rails提供的内置函数)

然后你可以发送一封电子邮件,发送方式与你的报告方法完全相同。发送ajax请求不会改变页面,但rails希望您有一个
send_to_webmaster.html.erb
send_to_webmaster.js.erb
,以减轻rails给我们带来的不便

你完全可以不渲染任何东西! 与:

render nothing:true

,我不想在单击按钮时更改url,但仍停留在同一页面(仅在单击“reported”后显示消息)。我想我必须使用javascript——是的。看看jquery库的ajax函数系列。