为什么我的js.erb不起作用

时间:2013-03-20 04:03:47

标签: ruby-on-rails jquery

我有以下代码:

comment.js.erb

alert("Alert");

的application.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 torespond to,但仍然无法运行。

3 个答案:

答案 0 :(得分:0)

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

jQuery.fn.submitWithAjax = function(elem, options, arg) {

答案 1 :(得分: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 %>

答案 2 :(得分:-1)

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

获取'your_controller_name / comments',:as =&gt; '评论'

在你的控制器中只需使用comments_path