我目前正在学习可行的,这很棒(而不是错误)。 我面临着一个奇怪的问题。
我的目标是为群组创建一个频道。允许用户在没有刷新的情况下查看新的。
此时,一切都很好。但是当我尝试显示我的组的名称时,可操作性不再起作用。组创建得很好,但它们没有实时显示。所以我必须刷新页面才能看到它们。任何人都可以帮我解决这个问题吗?
我的代码:
控制器(基团):
def index
@company = current_user.company
@groups = @company.groups
end
信道(基团):
class GroupsChannel < ApplicationCable::Channel
def subscribed
stream_from "groups"
end
def speak(data)
group = Group.create(name: data['group'], company_id: 12)
html = ApplicationController.render(partial: 'groups/group', local: {
group: group
})
ActionCable.server.broadcast 'groups', group: html
end
end
咖啡文件(群组):
App.groups = App.cable.subscriptions.create "GroupsChannel",
connected: ->
$(document).on 'keypress', '#group_name', (event) =>
if (event.keyCode == 13)
@speak(event.target.value)
$('#group_name').val('')
$('#MyNewGroup').modal('toggle')
disconnected: ->
# Called when the subscription has been terminated by the server
received: (data) ->
$('#groups_area').append(data.group)
speak: (group) ->
@perform 'speak', {group: group}
视图(指数):
<div class="container">
<h1 style="text-align:center; margin-bottom: 30px; margin-top: 10px;">Vos groupes</h1>
<div id="groups_area">
<%= render @groups%>
</div>
</div>
视图(_group)
<div class="col-md-3">
<div class="panel panel-success">
<div class="panel-heading">
<h3 style="margin-top:0; text-align:center">
====================================Problem========================================
<%= group.name %>
====================================Problem========================================
</h3>
</div>
<div class="panel-body">
test body
</div>
</div>
</div>
因此,当我添加此行<%= group.name %>
时,前置操作不再有效。
答案 0 :(得分:2)
您的频道文件中似乎有拼写错误。渲染部分内容时,您必须使用locals
,而不是local
。所以做以下改变:
html = ApplicationController.render(partial: 'groups/group', local: {
group: group
})
将local
更改为locals
:
html = ApplicationController.render(partial: 'groups/group', locals: {
group: group
})