簡體   English   中英

ChatRooms#show中的ExecJS :: RuntimeError

[英]ExecJS::RuntimeError in ChatRooms#show

我遇到的問題:

在此處輸入圖片說明

這是我的room.coffee文件,一切正常。

 jQuery(document).on 'turbolinks:load', -> messages = $('#messages') if $('#messages').length > 0 App.global_chat = App.cable.subscriptions.create { channel: "ChatRoomsChannel" chat_room_id: messages.data('chat-room-id') }, connected: -> # Called when the subscription is ready for use on the server disconnected: -> # Called when the subscription has been terminated by the server received: (data) -> # Data received send_message: (message, chat_room_id) -> @perform 'send_message', message: message, chat_room_id: chat_room_id 
 @import "bootstrap-sprockets"; @import "bootstrap"; #messages { max-height: 450px; overflow-y: auto; .avatar { margin: 0.5rem; } } 
 <h1><%= @chat_room.title %></h1> <div id="messages" data-chat-room-id="<%= @chat_room.id %>"> <%= render @chat_room.messages %> </div> <hr> <%= form_for @message, url: '#' do |f| %> <%= hidden_field_tag 'chat_room_id', @chat_room.id %> <div class="form-group"> <%= f.label :body %> <%= f.text_area :body, class: 'form-control' %> <small class="text-muted">From 2 to 1000 characters</small> </div> <%= f.submit "Post", class: 'btn btn-primary btn-lg' %> <% end %> 

但是在我將以下代碼添加到同一文件中之后,它顯示ExecJS :: RuntimeError。

 $('#new_message').submit (e) -> $this = $(this) textarea = $this.find('#message_body') if $.trim(textarea.val()).length > 1 App.global_chat.send_message textarea.val(), messages.data('chat-room-id') textarea.val('') e.preventDefault() return false 

我確實搜索了很多類似的問題,大多數使用pc的人都遇到了這個問題。 但是我正在使用mac,我也不知道為什么也會出現此錯誤。

您需要javascript運行時環境

安裝node.js或添加therubyracer gem

sudo apt-get install nodejs

或者在您的Gemfile添加therubyracer gem

gem 'therubyracer'

在room.coffee文件中,代碼使用兩個空格縮進。 在代碼中,您添加的縮進不止於此。 如果您在$('#new_message').submit (e) ->之后的部分上縮進以匹配兩個空格縮進,則將解決語法錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM