1

在我的 jquery 帖子中,我有这样的代码

function checkBill(trs_id, bill_id){
    $.ajax({
      type: 'POST',
      url: "/check_bill",
      data: {bill_id: bill_id, transaction_id: trs_id},
      headers: {
        'X-CSRF-Token': '<%= form_authenticity_token.to_s %>'
      },
      dataType: 'script'
    });
  }

在我的控制器中成功获取 jquery 帖子的参数,但我的日志中出现错误缺少模板?我不知道为什么?我猜jquery post不需要模板

4

2 回答 2

1

缺少的模板基本上是您的视图文件夹中缺少check_bill.js.erb


视图和阿贾克斯

当您的服务器收到请求(HTTP 或 Ajax)时,它将通过运行操作并呈现所需的视图来处理它

Rails 允许您呈现 HTML 和 JS 视图,它们以表单action_name.html.erbaction_name.js.erb. 如果你发送一个 JS 请求,Rails 会尝试渲染 .js.erb


返回 JS 请求

如果您想返回 JS 请求,则需要使用其他答案所述的代码(respond_to):

#app/controllers/your_controller.rb
def check_bill
    respond_to do |format|
        format.js { render :nothing => true } 
    end
end

不同之处在于您想要返回 Ajax。如果你让我们知道你期待什么样的回应,我会更新我的答案

于 2013-11-12T09:25:32.777 回答
0

你应该给你的控制器动作说明以用 js 响应。像这样:

 respond_to do |format|
   format.js {render :text => 'ok'}
 end

否则它将尝试使用 html 视图进行回复

于 2013-11-12T08:09:31.247 回答