ruby-on-rails - 如何在 Rails 中的页面内执行操作而不呈现新页面

标签 ruby-on-rails

在我的 Rails 应用程序中,我尝试添加一个联系人用户弹出框,用于向用户发送电子邮件。

我有适当的 javascript 来显示弹出表单,它本身就是一个部分。

当用户在联系表单上单击提交时,它会调用一个 Controller 操作来传递邮件。提交消息后,我想留在同一页面上,但隐藏弹出框。我的问题是我无法获得传递邮件而不是呈现自己的 View 的 Controller 操作。我试过了

render nothing: true

但这只是呈现一个空白页面。

我的表单设置如下

= form_tag({:controller => 'users', :action => 'contact_user'}, :method => 'put') do 

在我的路线配置中我有

resources :users
  collection do
     put 'contact_user'
  end

最佳答案

如果您通过 AJAX 提交表单,您可以做您想做的事情。

:remote => true 添加到您的表单将完成此操作:

= form_tag({:controller => 'users', :action => 'contact_user'}, :method => 'put', :remote => true) do 

现在,表单提交将作为 AJAX 请求到达您的 Controller 。然后,您应该能够按照您的建议不渲染任何内容,甚至可以执行类似渲染 .js.erb 之类的操作来执行一些 Javascript(例如,隐藏您正在谈论的弹出窗口) .

关于ruby-on-rails - 如何在 Rails 中的页面内执行操作而不呈现新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14858463/

相关文章:

javascript - 保存 Rails 之前进行验证

ruby-on-rails - Rails 4 - 使用参数创建 Link_to Action

ruby-on-rails - ActiveAdmin,CSV 导入,将编码更改为 cp1251

javascript - 提供 "In progress".. ."Done"通知的最简单方法?

ruby-on-rails - PDFkit javascript 问题

ruby-on-rails - 在 RAILS View 中包含一个公共(public) javascript 文件夹

ruby-on-rails - 工厂女孩和血统

ruby-on-rails - 删除字符串中的第一个 "#"字符 - Rails

ruby-on-rails - 将哈希深度转换为平面路径数组

ruby-on-rails - 如何使用 ruby​​ 在新窗口中打开链接?