我有一个 Rails 应用程序试图合并一些 AJAX,其中单击“新建”会打开一个模式窗口和一个表单。我希望能够在失败时显示验证错误,因此在我的创建操作中,我考虑重新渲染 new.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\">
我尝试过将各种选项放入渲染块中,但没有成功。有小费吗?
最佳实践是支持 AJAX 和非 AJAX 调用,以防用户因任何原因关闭 javascript。
def create
@place = Place.new(params[:place])
respond_to do |format|
if @place.save
format.html { redirect_to places_path, :notice => "Successfully created place" }
format.js # renders create.js.erb, which could be used to redirect via javascript
else
format.html { render :action => 'new' }
format.js { render :action => 'new' }
end
end
end
The render :action => 'new'
实际上渲染控制器动作的模板new
结果是new.html.erb
分别到new.js.erb
取决于它是非 AJAX 还是 AJAX 调用。
In new.js.erb
你的 ERB/javascript 代码是:
$("#new_grouping").html("<%= escape_javascript(...) %>">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)