阅读了一些经验后,我觉得这个问题可能需要再次提出。在Rails3中编码时,当用户尝试在我的应用程序的另一个元素上创建帖子时,我正在尝试实现一些平滑的Ajax效果。这是我关注的代码:
app / views / posts / new.html.haml
- form_for @post, :remote=>true do |f| = f.text_area :content = submit_tag "Post"
app / controllers / post_controller.rb
def create @comment = Post.new(params[:post]) @comment.save end
app / views / posts / create.js.erb:
alert("ajax worked!");
我遵循了在UJS Railscast上看到的内容,但是似乎没有任何反应。不仅如此,firebug也无法给我任何有关正在发生的事情的描述性证据。它告诉我,它是在提交后成为新帖子对象的,但没有其他内容。
有任何想法吗?
我找到了答案!问题是,当控制器渲染视图时,它包括我的应用程序的整体布局。布局正在屈服于渲染动作,因此.js.erb文件中包含的我的javascript代码被吐到了application.rhtml中。我通过将其包含在控制器操作中以显示我的帖子来解决此问题:
respond_to do |format| format.js {render :layout=>false} end