首页 > 解决方案 > Rails respond_to 抛出 ActionController::UnknownFormat

问题描述

所以,我试图用一个 js 文件来响应一个动作。

  def my_schedule
    respond_to do |format|
      format.js
    end
  end

在我看来,我有'my_schedule.js.erb',但它甚至没有被执行,rails 在控制器中坏了并给我一个错误:ActionController::UnknownFormat,我有 response_to。

我试图添加

respond_to :js, :json, :html

在我的控制器开始时退出操作但仍然无法正常工作。需要帮助来调试它并了解 respond_to 是如何工作的。

标签: javascriptruby-on-rails

解决方案


format.js只会响应 xhr 请求。您不能仅通过导航到指向此控制器和方法的路由来触发此响应。

您可以js.erb通过将 respond_to 块更改为

def my_schedule
  respond_to do |format|
    format.html
    format.js
  end
end

然后在与 js.erb 相同的视图文件夹中创建一个 my_schedule.html.erb 文件,内容如下

<%= link_to 'Test', my_schedule_path, data: { remote: true } %>

请注意,您可能需要调整该路径,我只是在猜测。

然后导航到您之前尝试的相同路径。您应该会看到一个链接,单击该链接将触发 js 响应。


推荐阅读