我有一个场景,在编辑操作中,我需要渲染 edit.html.erb 以及触发 edit.js.erb 文件。现在我有
def edit
@page_id = params[:id]
respond_to do |format|
format.html
format.js
end
end
但只有视图在渲染,但我的 edit.js.erb 仍然没有触发。
我有一个场景,在编辑操作中,我需要渲染 edit.html.erb 以及触发 edit.js.erb 文件。现在我有
def edit
@page_id = params[:id]
respond_to do |format|
format.html
format.js
end
end
但只有视图在渲染,但我的 edit.js.erb 仍然没有触发。
用js响应并在下面编写代码:
编辑.js.erb
$('body').html('<%=j render "edit" %>');
你对它所做的事情的印象是错误的。
如果您希望 javascript 运行,那么您的 edit.html.erb 文件需要包含:
<%= javascript_include_tag "jsfilename" %>
并将您的 javascript 存储在 public/javascripts/jsfilename 或类似位置(public/assets/javascripts/
对 format.html、format.js 的响应用于请求该格式的视图。
例如。如果我浏览到 edit.html,它会显示 html.erb 视图,如果我浏览到 edit.js,它会显示 js.erb 视图。该功能使您可以请求不同文件格式的相同内容,而不是向您的网页添加 javascript 功能。
使用这两种分析器,您都可以使其正常工作,但您不遵循约定。edit.js 用于 Ajax 调用。
您似乎在做的是使用部分来构建您的页面。那么你真的应该遵循命名约定(以_开头的文件名)以便其他程序员清楚。
其次,您始终需要确保您的网站可以在没有 javascript 的情况下运行,因此您的编辑页面永远不需要任何 Javascript 才能运行。javascript 是对改善用户体验的补充(例如使用 ajax 进行编辑而无需页面刷新)。
总结: - 将“必需的”javascript 代码移至您的 edit.html.erb。- 如果 Ajax 被激活,只使用 edit.js.coffee 来处理现有网页的更新,使用来自 edit.html.erb 的尽可能多的 js。- 将共享代码的其余部分放入部分中,例如 _niceedit.js.coffee 并使用 'render :partial=>' 渲染它...
遵循约定,它将在以后和使用测试服务等时为您提供帮助。