3

私のレールアプリでは、ユーザーに電子メールメッセージを配信する連絡先ユーザーポップアップボックスを追加しようとしています.

それ自体が部分的なポップアップフォームを表示するための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 に答える