0

我是 Rails 新手,很难弄清楚如何在没有相应模型对象的情况下创建通过 Ajax 提交的表单。

我的用例是一个简单的表单,它收集电子邮件地址并发送电子邮件;没有什么要坚持的,所以没有模型。

在我确实有模型的情况下,我在form_for(@model, remote: true). 对于没有模型的情况,我似乎找不到合适的帮手。我试过form_tag(named_path, remote: true)了,但没有使用 Ajax。

指向带有适当控制器示例的示例的指针,.html.erbroutes.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 回答