我有一个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