我正在rails中构建一个表单,它将通过ajax编辑现有问题.
提交表单并更新问题后,控制器中的更新方法将呈现update.js.erb,这将再次隐藏表单.
我的问题是update.js.erb中的javascript代码根本没有执行.
我知道该文件正在渲染,因为它显示在服务器输出中,当我放入时
<% raise params %>
Run Code Online (Sandbox Code Playgroud)
进入它,它的工作原理.
然而,即使是最简单的
alert('hello');
Run Code Online (Sandbox Code Playgroud)
在同一个文件中没有任何效果.
我已经排除了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>');
Run Code Online (Sandbox Code Playgroud)
def更新
编辑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 …Run Code Online (Sandbox Code Playgroud) 在阅读了一些经验之后,我觉得这个问题可能需要重新提起来.在Rails3中进行编码时,我试图在用户尝试在我的应用程序的另一个元素上创建帖子时实现一些流畅的Ajax效果.这是我关注的代码:
应用程序/视图/职位/ new.html.haml
- form_for @post, :remote=>true do |f|
= f.text_area :content
= submit_tag "Post"
Run Code Online (Sandbox Code Playgroud)
应用程序/控制器/ post_controller.rb
def create
@comment = Post.new(params[:post])
@comment.save
end
Run Code Online (Sandbox Code Playgroud)
应用程序/视图/职位/ create.js.erb:
alert("ajax worked!");
Run Code Online (Sandbox Code Playgroud)
我遵循了我在UJS Railscast上看到的内容,但似乎没有任何东西被解雇.不仅如此,萤火虫还没有给我任何关于正在发生的事情的描述性证据.它告诉我它在提交时创建了新的post对象,但没有进一步说明.
有任何想法吗?