我有一個Rails應用程序嘗試合併一些AJAX,點擊新建打開模式窗口和窗體。我希望能夠顯示驗證錯誤,如果它失敗了,所以在我的創建操作中,我想重新渲染new.js.erb文件。這是正確的方法嗎?在我的瀏覽器,如Rails:使用控制器渲染js.erb模板
def create
@place = Place.new(params[:place])
if @place.save
redirect_to places_path, :notice => "Successfully created place"
else
render "new.js.erb"
end
end
結果我得到的是逃脫JS文字:
$("#new_grouping").html("<div class=\"modal-header\">\n <a class=\"close\" data- dismiss=\"modal\">×<\/a>\n <h3>Create a new menu section<\/h3>\n<\/div>\n<form accept-charset=\"UTF-8\" action=\"/places/1-mama-s-pizza/groupings\" class=\"simple_form new_grouping\" id=\"new_grouping\" method=\"post\" novalidate=\"novalidate\">
我試圖把各種選擇到渲染塊,但沒有運氣。有小費嗎?
好的建議。我一定會支持這兩個。然而,它讓我思考,我沒有辦法實現我想要的,即如果失敗,我的屏幕上呈現的JavaScript響應POST CREATE操作。它必須是重定向或再次呈現整個頁面。這是公平的嗎? – chourobin 2012-03-16 11:44:36
嗯,是的,沒有。這取決於你如何編寫'new.js.erb'以及你在那裏做了些什麼。您只能將一些錯誤特定的HTML插入到頁面的某些元素,而不是再次渲染整個事物。但根據我的經驗,你必須記住很多事情。所以我實際上不會建議完全使用AJAX – Vapire 2012-03-16 12:16:58