2014-03-07 54 views
0

當前設置:Ruby on Rails 2.3和Ruby 1.8.7(不要問我們正在研究它)。Ruby on Rails 2.3,form_tag提交給Rails控制器,JS函數未調用

form_tag helper用於Bootstrap模式以在Rails控制器中調用操作。這裏的視圖(.haml)

- form_tag({:action => 'update_logins'}, 
{:method => :post, :multipart => true, :id => 'upload_form', :target => 'upload_target', :class=>'form-horizontal' }) 

控制器動作正確調用,但我返回到JavaScript函數的調用,儘管多次嘗試,它不調用函數,而是似乎呈現文本。即使是一個簡單的呈現控制器聲明不起作用:render :js => "alert('hello');"

我有一種感覺,這與請求頭似乎並不怎麼接受做的javascript:

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

響應頭指示的Javascript:Content-Type:text/javascript; charset=utf-8

,響應被正確接收:alert('hello');

但它得到交流沒有成功請調用任何函數。

任何想法?

回答

0

我假設您使用SLIM/HAML作爲模板引擎。 檢查,如果你正在生成<form>標籤在你的HTML

你可以嘗試更換

- form_tag({:action => 'update_logins'},{:method => :post, :multipart => true, :id => 'upload_form', :target => 'upload_target', :class=>'form-horizontal' }) 

= form_tag({:action => 'update_logins'},{:method => :post, :multipart => true, :id => 'upload_form', :target => 'upload_target', :class=>'form-horizontal' }) 

這種方式,它會在您的HTML中<form>

+0

HTML中已經有一個'

'。當我改變它來嘗試它時,它不幸中斷了事情,並且模式將不再出現:'ActionView :: TemplateError(form_tag直接輸出到Haml模板。忽略它的返回值並使用 - 運算符,或者使用capture_haml以String的形式獲取值 –