3

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

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

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

render nothing: true

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

我的表格设置如下

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

在我的路线配置中,我有

resources :users
  collection do
     put 'contact_user'
  end
4

1 回答 1

8

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

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

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

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

于 2013-02-13T16:45:56.950 回答