0

私はRailsを初めて使用し、対応するモデルオブジェクトがなくてもAjaxを介して送信するフォームを作成する方法を理解するのに苦労しています。

私のユースケースは、メールアドレスを収集してメールを送信する単純なフォームです。永続化するものがないため、モデルはありません。

私がモデルを持っている場合、私form_for(@model, remote: true)で成功しました。モデルがない場合に適したヘルパーが見つからないようです。私は試しform_tag(named_path, remote: true)ましたが、それは機能しますが、Ajaxを使用していません。

.html.erb適切なコントローラーを使用した例を含む例へのポインターroutes.rb

4

1 に答える 1

3

これが私がそれを解決した方法です。重要なのはform_tag、私のルートに適切に一致する引数を使用してハッシュを使用および指定することでした。私のビジネスロジックでは、コントローラーロジックで使用される「id」パラメーターを渡す必要があります。

<%= form_tag(sendmail_path({ id: 1}), remote: true) do %>
  <%= text_field_tag :email, params[:email] %>
  <%= submit_tag "Send", remote:true %>
<% end %>

routes.rb

MyApp::Application.routes.draw do
  post '/sendmail/:id(.:format)' => 'mycontroller#sendmail', :as => 'sendmail'
  # etc...
end

また、送信後にフォームを更新するsendemail.js.erbテンプレートを提供する必要がありました。

于 2012-06-10T04:32:56.653 に答える