如何在这个jQuery脚本中编写条件语句?

时间:2014-12-29 13:37:53

标签: javascript jquery ruby-on-rails mustache

我有一个jquery函数,它以rails表格为目标,并在提交事件时将表单数据发布到相应的操作。然后返回创建的对象(审阅),并通过胡子模板附加到选定元素并呈现:

$(document).ready(function(){
     $('.new_review').on('submit', function(event){
        event.preventDefault();
        var reviewList = $(this).siblings('ul’);
        $.post($(this).attr('action'), $(this).serialize(), function(review){
            var newReview = Mustache.render($('#review_template').html(), review);
            reviewList.append(newReview);
        });
    });
});

我在我的评论控制器中写了一个if else语句,以限制用户(设计模型)只能创建一个评论:

def create
    @restaurant = Restaurant.find(params[:restaurant_id])
    @review = @restaurant.reviews.new(params[:review].permit(:thoughts, :rating))

    if @restaurant.reviews.find_by user_id: current_user.id
        flash[:notice] = "You already reviewed this restaurant!” 
        redirect_to '/restaurants’
    else
        @review.user = current_user
        @review.save
        redirect_to '/restaurants' unless request.xhr?
    end
end

但是我现在需要在我的jquery中插入一个条件,以确保只有在post操作后实际返回一个review对象时它才会尝试追加一个新对象。我认为这需要写入post函数的第三个参数,但是如何解决它有点迷失。

任何人都能确定这是我正在努力实现的正确方法,以及我究竟能写出这个。提前感谢JS新手。

1 个答案:

答案 0 :(得分:0)

下面现在可以完美地使用post函数中的一个简单if语句:

$(document).ready(function(){
  $('.new_review').on('submit', function(event){
    event.preventDefault();
    var reviewList = $(this).siblings('ul');
    $.post($(this).attr('action'), $(this).serialize(), function(review){
      var newReview = Mustache.render($('#review_template').html(), review);
      if review 
        reviewList.append(newReview);
    });
  });
});