2012-06-09 50 views
0

我是Rails的新手,很難搞清楚如何創建一個通過Ajax提交而不需要相應模型對象的表單。Rails:沒有模型對象的啓用Ajax的表單

我的用例是一種收集電子郵件地址併發送電子郵件的簡單表單;沒有什麼可以堅持的,所以沒有模型。

如果我的有一個型號,我已經與form_for(@model, remote: true)成功。在沒有模型的情況下,我似乎找不到合適的幫手。我試過form_tag(named_path, remote: true),那可行,但不使用Ajax。

指向一個例子與一個適當的控制器的例子,.html.erbroutes.rb將非常感激。

+1

「它的工作原理,但它不使用ajax」。你是什​​麼意思?它會生成一個非遠程表單並正常發佈數據? – shime

+0

是的 - 它正常發佈,但然後重新加載頁面。 –

回答

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模板,提交更新後的形式。

相關問題