coffeescript行为就像一个ID仍然存在,但事实并非如此

时间:2016-03-13 03:27:58

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

我已从视图中删除了一个ID,但我的coffeescript文件响应就好像我没有。当我尝试应用新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作为coffeescript中的id时,一切正常。在视图中使用哪个ID没有区别(这就是为什么ID目前是#test-sex,因为我正在尝试)。

1 个答案:

答案 0 :(得分:1)

这与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"
        })