.js文件在不respond_to的情况下调用

.js file being called without respond_to

本文关键字:to 情况下 调用 respond 文件 js      更新时间:2023-09-26

我有一个评级控制器,其创建操作通过Javascript调用。 我的评级文件夹中有一个 create.js 文件。 我认为为了调用 create.js 文件,您需要这样的东西

respond_to do |format|
    format.js
end

但是,当我删除它时,仍在调用创建.js文件。 这是因为在创建操作中调用了 create.js(即方法名称和.js文件匹配(? 谢谢!

更新:当缺少 format.js 时,它找不到 DOM 的元素。 例如,如果我有类似的东西

$('#id_3').html('<%=escape_javascript render(:partial => 'show') %>');

部分"显示"被执行,正如我在终端中看到的那样,但它找不到div "id_3",因此部分永远不会出现在 DOM 中。 任何澄清将不胜感激,谢谢

轨道魔法!如果指向资源的链接类似于/dogs/1.js,那么respond_to会按照您的想象来处理它。试着打电话给/dogs/1,看看会发生什么。还有效吗?现在尝试在格式.js之前添加格式.html。这应该可以让您很好地了解respond_to的工作原理。

这就是 Rails 的工作方式:它呈现与操作同名的视图。

如果您有多个具有相同名称(采用不同格式(的视图,则必须在请求中指定所需的视图,并使用 respond_to 方法相应地做出响应:

def index
  respond_to do |format|
    format.js { ... }
    format.html { ... }
    ...
  end
end

GET /index.html将呈现索引.html.erb 文件(假设您使用的是 ERB(

GET /index.js将呈现索引.js.erb 文件