【问题标题】:coffeescript acts like an ID still exists, but it does notcoffeescript 的行为就像一个 ID 仍然存在,但它不存在
【发布时间】:2016-06-28 05:26:14
【问题描述】:

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

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

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

我不认为问题与将咖啡脚本放在错误的文件中有关,因为我在其他情况下也这样做过,而且没问题。另外,它没有解释为什么它会响应不再存在的 ID。

请帮忙!

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

lists.coffee:

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

设计/注册/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_sex 不在视图中,coffeescript 也会响应此 ID,并且仅响应此 ID。当我在咖啡脚本中使用 user_settings_sex 作为 id 时,一切正常。在视图中使用哪个 ID 没有区别(这就是 ID 当前为 #test-sex 的原因,因为我正在试验)。

【问题讨论】:

  • 也许你应该发布有问题的代码,这样人们就会明白你指的是什么。
  • @dan-klasson 代码已添加。如果有特定的附加部分会有所帮助,请告诉我。

标签: javascript jquery ruby-on-rails ruby coffeescript


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢!!这立即解决了我的问题。顺便说一句,你有预感为什么即使在我删除旧 ID 后,coffeescript 仍然可以识别它?在正确建立新 ID 之前,旧行为是否会持续存在?
  • 旧的只是默认的 - 你从来没有设置它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-21
  • 2023-03-13
  • 2016-11-18
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 2015-01-04
相关资源
最近更新 更多