0

我有以下代码:

评论.js.erb

alert("Alert");

应用程序.js

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

jQuery.fn.submitWithAjax = function() {
   this.submit(function() {
     $.post(this.action, $(this).serialize(), null, "script");         
     return false;
                         })
   return this;
};


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

查看表格:

<% 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,
                   :class => 'box',
                   :style => "width: 834px; height: 40px;"%>
  <%= f.submit "Comment"%>
<% end -%>

控制器方法:

def comment    
  @comment = Comment.new(params[:comment])
  @comment.user_id = @current_user.id
  @task.comments << @comment
  flash[:notice] = "thank you"
  if @comment.save
    # what code do I put here to render comment.js.erb?
  else

  end
end

comment如果我希望该方法呈现我的comment.js.erb,我需要输入什么代码?我试过render toand respond to,但它仍然没有运行。

4

3 回答 3

0

您需要FORM在插件中作为参数传递。

jQuery.fn.submitWithAjax = function(elem, options, arg) {
于 2013-03-20T04:07:11.187 回答
0

无需显式渲染comment.js.erb。默认情况下,控制器将在执行该方法后呈现comment.js.erb 。也许您可以拥有以下代码。

评论动作中

def comment
  # ...
  @comment.save
end

并在comment.js.erb文件中

<% if @comment.valid? %>
  alert("Comment created successfully");
<% else %>
  alert("Something went wrong.");
<% end %>
于 2013-03-20T04:15:12.513 回答
-1

在您的路线中添加一个获取请求以获取 comments.js.erb

得到'你的控制器名称/评论',:as =>'评论'

在您的控制器中,只需使用 comments_path

于 2013-03-20T05:48:12.060 回答