coffeescript 的行为就像 ID 仍然存在一样,但它不存在

coffeescript acts like an ID still exists, but it does not

本文关键字:一样 不存在 存在 ID coffeescript      更新时间:2023-09-26

我已经从视图中删除了一个ID,但我的coffeescript文件响应好像我没有。当我尝试应用新 ID 时,它不会响应新 ID,但仍会响应旧的(不再存在的)ID。

我试过rake assets:precompilerake assets:clean,但无济于事。

一个线索,也许是:coffeescript在lists.coffee中,而视图是dedesigne/registrations/new.html.erb(不是Lists模型的一部分)。我正在使用lists.coffee,因为该操作取决于该文件中编写的函数,我必须在users.coffee中复制这些函数。

我认为问题与将 coffeescript 放入错误的文件中无关,因为我在其他情况下已经这样做了,而且很好。另外,它没有解释为什么它会响应不再存在的 ID。

请帮忙!

编辑(代码示例和进一步说明):

列表.咖啡:

$ ->
  ...
  $('#user_settings_sex').change ->
    ...many actions...

devise/registrations/new.html.erb

<%= n.select(:sex, [['Male', 'm'],['Female', 'f'],['Decline to say', 'd']], 
  :id => "test-sex", 
  :include_blank => true, 
  :allow_blank => false, 
  :selected => params[:sex]) %>

即使 #user_settings_不在视图中,coffeescript 也会响应此 ID,并且仅响应此 ID。当我在咖啡脚本中使用user_settings_作为 id 时,一切正常。在视图中使用哪个 ID 没有区别(这就是为什么 ID 当前是 #test-,因为我正在试验)。

这与 coffeescript 无关:如果您查看生成的 html,您会发现 select 元素没有 id test-sex

这是因为 select 方法采用两个选项哈希::selected:include_blank 等选项,以及应用于 select 元素的 html 选项的第二个哈希。诸如设置该元素的 id 或类之类的事情需要在第二个哈希中,即。

n.select(:sex,[['Male', 'm'],['Female', 'f'],['Decline to say', 'd']],
        {
          :include_blank => true, 
          :allow_blank => false, 
          :selected => params[:sex]
        }, {
          :id => "test-sex"
        })