【发布时间】:2013-09-27 00:20:36
【问题描述】:
我正在 Rails 中构建一个表单,它将通过 ajax 编辑现有问题。
提交表单并更新问题后,控制器中的update方法渲染update.js.erb,会再次隐藏表单。
我的问题是 update.js.erb 中的 javascript 代码根本没有执行。
我知道文件正在渲染,因为它显示在服务器输出中,并且当我放了一个
<% raise params %>
进入它,它起作用了。
然而,即使是最简单的
alert('hello');
在同一个文件中无效。
我已经排除了 javascript 和 jquery 配置问题,因为相同的代码在我的 edit.js.erb 文件中运行良好。它只是在 update.js.erb 中不起作用。
我错过了什么?
编辑:
Firebug 没有显示错误。这是 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 的网络面板中查看响应。它显示了什么?
-
添加了对问题的回复。感谢您的观看。
-
显示您是否在表单中构建了 ajax?例如,如果您只是调用 $.ajax(..) 但对响应不执行任何操作,则不会执行任何操作,例如使用 jQuerys getScript (api.jquery.com/jQuery.getScript)
-
通过
:remote => true内置到表单中。表单提交正常,更改记录在数据库中。是更新方法调用 update.js.erb 后调用的 javascript 不起作用。 -
发布您的更新控制器操作
标签: javascript jquery ruby-on-rails ajax ruby-on-rails-3