我目前正在使用下面的示例应用在我的Rails 4应用程序中实现webrtc + pubnub大厅: https://github.com/pubnub/webrtc-chat
除了html和coffeescript之间的绑定外,我已经成功实现了所有部分。
在我的chatroom.html.erb中,我有以下内容:
<div class="box">
<h3>Try Now</h3>
<input type="text" id="userid" placeholder="Username" />
<br />
<a href="#" class="btn btn-large btn-inverse" id="login">Log In</a>
<br />
<p style="padding-top: 12px;">- or -</p>
<span id="signinButton"></span>
</div>
<script type="text/html" id="user-item-template">
<li class="user" data-user="<%= id %>">
<span class="name"><%= name %></span>
<a href="#" class="btn btn-success" data-user="<%= id %>">Call</a>
</li>
</script>
在我的coffeescript中,我有以下内容:
document.querySelector('#login').addEventListener 'click', (event) ->
uuid = document.querySelector('#userid').value
login "guest-#{uuid}"
login = (name) ->
uuid = name
userTemplate = _.template $("#user-item-template").text()
userList = $("#user-list")
$(document).on 'pubnub:ready', (event) ->
pubnub.subscribe
channel: 'phonebook'
callback: (message) ->
# Do nothing
presence: (data) ->
# {
# action: "join"/"leave"
# timestamp: 12345
# uuid: "Dan"
# occupancy: 2
# }
if data.action is "join" and data.uuid isnt uuid
newItem = userTemplate
name: data.uuid.split('-')[1]
id: data.uuid
userList.append newItem
else if data.action is "leave" and data.uuid isnt uuid
item = userList.find "li[data-user=\"#{data.uuid}\"]"
item.remove()
我收到以下错误:
内部服务器错误 未定义的局部变量或方法`id'用于#&lt;#:0x00000101ff1d40&gt;
我假设我因erb标签而出现并发症?它们已在js app示例中定义。 rails erb标签和使用javascript应用程序找到的标签之间有区别吗?我注意到该示例仅使用普通的html。也许像Angular.js这样的选项可能有所帮助,但我宁愿不深入研究它。
编辑:添加了用户ID /名称
的输入表单