【问题标题】:jquery post get missing template in railsjquery post在rails中丢失模板
【发布时间】:2013-11-12 08:03:56
【问题描述】:

在我的 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 不需要模板

【问题讨论】:

  • 你需要从你的控制器返回响应为js
  • 你确定你的 jquery 中需要你的 CSRF 令牌吗?它已经在您网页的元代码中输出了

标签: ruby-on-rails jquery missing-template


【解决方案1】:

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


视图和 Ajax

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

Rails 允许您以 action_name.html.erbaction_name.js.erb 的形式呈现 HTML 和 JS 视图。如果你发送一个 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。如果你让我们知道你期待什么样的回应,我会更新我的答案

【讨论】:

    【解决方案2】:

    你应该给你的控制器动作指示以用一个 js 来响应。像这样:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 1970-01-01
      • 2011-02-17
      相关资源
      最近更新 更多