我正在用Rails編寫一個窗體,它將通過ajax編輯現有的問題。Rails update.js.erb沒有執行javascript
提交表單並且問題已更新後,控制器中的更新方法會呈現update.js.erb,這會再次隱藏表單。
我的問題是,update.js.erb中的javascript代碼根本沒有執行。
我知道該文件被渲染,因爲它在服務器輸出顯示出來,當我把
<% raise params %>
到它,它的工作原理。
然而,即使是最簡單
alert('hello');
在同一個文件中沒有任何影響。
我排除了JavaScript和jQuery配置問題,因爲相同的代碼在我的edit.js.erb文件中完美地工作。它只是在update.js.erb中不起作用。
我錯過了什麼?
編輯:
螢火未顯示任何錯誤。這裏是Firebug的網絡面板的響應:
alert('hello');
$('#question_body').replaceWith('<h4><p>jhsdfjhdsb k jdfs j fjfhds <strong>jfshaflksd;hf sdldfs l fdsalkhdfskhdfs</strong>;fd lfdksh hfdjaadfhsjladfhsjadfs ;df sjldfsj dfas hafdsj fdas ;ldfas ldfs df dl;hdf fdh ;fdj ;lfads</p></h4>');
高清更新
編輯2:
這是控制器的動作:
def update
respond_to do |format|
if @question.update_attributes(params[:question])
format.html { redirect_to @question, :flash => { :success => 'Question was successfully updated.' } }
format.json { head :no_content }
format.js {}
else
format.html { render action: "edit" }
format.json { render json: @question.errors, status: :unprocessable_entity }
end
end
end
結帳在Firebug的網絡面板的響應。它顯示了什麼? – Arjan
添加了對問題的回覆。謝謝參觀。 – dmanaster
顯示您是否在表單中創建了ajax?例如,如果你只是調用$ .ajax(..),但是對響應什麼也不做將會被執行,與例如使用jQuerys getScript(http://api.jquery.com/jQuery.getScript/)相反 – trueunlessfalse