我有一个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新手。
答案 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);
});
});
});