意外 -> userSelect.on 'valuesChanged' ->

unexpected -> userSelect.on 'valuesChanged' ->

我 运行 来自 challengers.coffee 的这段代码,我得到了错误 ActionView::Template::Error (SyntaxError: [stdin]:3:31: unexpected ->,我能够进一步提取它(参见第 3 行的注释):

$(document).ready ->
 userSelect = $('#change-challenge-options')
 userSelect.on 'valuesChanged' -> 
  currentUserId = $('#current-challenge-options').data('current-user-id')
   if(currentUserId == userSelect.val())
    $('#current-user-challenges').show()
    $('#challenged_user_challenges').hide()
   else
    $('#challenged_user_challenges').show()
    $('#current-user-challenges').hide()

dueler/_dueler_fields.html.erb

<%= f.select :user_id, User.order(:name).map { |user| [user.full_name, user.id] }, include_blank: true, id: "change-challenge-options", data: {current_user_id: current_user.id } %> will

<%= collection_select(:dueler, :challenge_id, @current_user_challenges, :id, :full_challenge, include_blank: true, id: "current-user-challenges") %>
<%= collection_select(:dueler, :challenge_id, @challenged_user_challenges, :id, :full_challenge, include_blank: true, id: "challenged_user_challenges") %>

您在 -> 之前少了一个逗号。代码应如下所示(我还删除了 if 语句中的括号):

$(document).ready ->
  userSelect = $('#change-challenge-options')
  userSelect.on 'valuesChanged', -> 
    currentUserId = $('#current-challenge-options').data('current-user-id')
    if currentUserId == userSelect.val()
      $('#current-user-challenges').show()
      $('#challenged_user_challenges').hide()
    else
      $('#challenged_user_challenges').show()
      $('#current-user-challenges').hide()