2013-04-20 26 views
1

我在表單控制器操作上遇到ActionView::MissingTemplate錯誤,因爲它將params數據傳遞給控制器​​,因此不需要視圖,但控制器會發布API請求。Rails 3表單的簡單自定義發佈操作

# Newsletter controller 

def index 
end 

def subscribe 
    Gibbon.list_subscribe({:id => "my-list-id", :email_address => params[:email]}) 
end 

在我的路線:

# Routes 
match "/subscribe", to: "newsletter#subscribe", :via => :post 

查看在我的形式住

# newsletter/index.html.erb 
<%= form_tag subscribe_path, class: "form", remote: true do %> 
    <%= text_field_tag :email, nil, :class => 'email', :type=>"email", :placeholder => 'Sign up for newsletter' %> 
    <%= submit_tag "Go", class: "submit-button"%> 
<% end %> 

從新聞索引頁有一個表單,所有我希望它做的就是發送請求的用戶的電子郵件地址到我的訂閱操作

Error: 

Started POST "/subscribe" for 127.0.0.1 at 2013-04-20 18:01:02 +1000 
Processing by HomeController#subscribe as JS 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"ZseTNfGI5151hk7fIhQH5/l536hc9/kdARf57352Y=", "email"=>"[email protected]", "commit"=>"Go"} 
Completed 500 Internal Server Error in 1836ms 

ActionView::MissingTemplate (Missing template home/subscribe, application/subscribe with {:locale=>[:en], :formats=>[:js, "application/ecmascript", "application/x-ecmascript", :html, :text, :js, :css, :ics, :csv, :png, :jpeg, :gif, :bmp, :tiff, :mpeg, :xml, :rss, :atom, :yaml, :multipart_form, :url_encoded_form, :json, :pdf, :zip], :handlers=>[:erb, :builder, :coffee]}. Searched in: 
    * "/Code/myapp/app/views" 
): 

以上是我收到的錯誤。我想知道如何假裝這個模板問題,因爲該操作不需要視圖。

感謝您的幫助。

+0

嘗試變向動作結束 – Zippie 2013-04-20 08:34:24

+0

感謝Zippie以後。它看起來像這樣的工作。有沒有辦法讓redirect_to和flash消息與遠程表單一起工作? – 2013-04-20 08:43:01

+0

遠程表單?你的意思是AJAX表單?對不起,如果我誤解了一些東西,但爲什麼你需要一個遠程表單和重定向? – Zippie 2013-04-20 08:47:34

回答

1

你可以試試這個

def subscribe 
    if request.post? 
    Gibbon.list_subscribe({:id => "my-list-id", :email_address => params[:email]}) 
    redirect_to root_url, :notice => 'Success' 
    else 
    redirect_to some_place 
    end 
end 
在你的路由

post "/subscribe", to: "newsletter#subscribe" 

檢查你的路由翻番確認

+0

非常感謝Nich!我更瞭解它。有沒有辦法重定向到現有的網頁,而不是一個不同的網址,但也可以得到:通知的Flash消息。 – 2013-04-20 09:26:03

+0

我看到,如果我從表單中刪除remote:true,它將重定向到html頁面,否則它正在等待ajax響應? – 2013-04-20 09:32:00

+0

你可以渲染一個頁面,如果不是redirect_to..yah,remote_to:是爲ajax – Nich 2013-04-20 10:20:03