2013-03-19 75 views
0

我的形式是这样的如何更新我的div部分?

index.html.erb

<div id="comments_p"> 
    <%= render (:partial => "comment", :collection => tasks.comments) %> 
</div> 
<% form_for :comment, :url => comment_task_path(tasks.id), :html => {:remote => true, :class => "comment_form"} do |f| -%> 
    <%= f.text_field :remark, :placeholder => "Add Comments", :rows => 2, 
    :style => "width: 834px; height: 40px;"%> 
    <%= f.submit "submit"%> 
<% end -%> 

<script type="text/javascript"> 
    jQuery.fn.submitWithAjax = function() { 
    this.submit(function() { 
     var test = $.post(this.action, $(this).serialize(), null, "script"); 
     $(".comment_form")[0].reset(); 
     alert("Comment Submitted"); 
     return false 
    }) 
    return this; 
    }; 
</script> 

的application.js

jQuery.ajaxSetup({ 
    'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} 
}) 

$(document).ready(function() { 
    $(".comment_form").submitWithAjax(); 
}) 

我的问题是,如何更新我的股利。该警报的作品,但我似乎无法找到如何更新DIV comments_p

回答

0

希望的形式提交给创建的任务控制器方法。由于该请求是在后端的JS要求,所以只需要创建一个名为create.js.erb/应用/视图/任务/文件夹文件作为Unobtrusive Javascript Railscasts解释和编写代码什么都你想在成功的回应之后执行。

获取更新任务tasks_controller.rb

def create 
    #...code for creating the comments for the task 
    @tasks = ... #updated record with the latest comments 
end 

变量然后在create.js.erb响应代码文件shoild像

$("#comments_p").html('<%= render_partial :comment, :collection => @tasks.comments) %>'); 

comments_p div将在上述代码成功完成请求后更新。

+0

问题是否解决?或面临的任何问题? – 2013-03-19 09:11:56

+0

其固定,但问题是,在我的渲染create.js erb – 2013-03-20 02:50:04