Я следую этому учебнику и у меня возникла проблема, когда использование ruby в файле ActionCable вызывает ошибку undefined method 'body'
.Как я могу использовать ruby в этом файле?Я хочу, чтобы данные, переданные через Action Cable, правильно форматировались при добавлении, и я не могу сделать это с обычным js.Это мой app/assets/js/channels/messages.js.erb
файл:
App.messages = App.cable.subscriptions.create('MessagesChannel', {
received: function(data) {
$("#response").val("");
$('#messages').append(this.render_message(data));
$("#conversation-main").scrollTop($("#conversation-main")[0].scrollHeight);
},
render_message: function(data) {
return "<div class='message'><div><strong>" + data.user + ":</strong> <%= simple_format(@message.body) %></div><div class='date'><%= readable_datetime(@message.created_at) %></div></div>"
}
});
Я не могу сделать simple_format(data.body)
, поскольку эта переменная - js.Вот действие #create
в моем контроллере сообщений:
def create
@message = @conversation.messages.new(message_params)
@message.user = current_user
respond_to do |format|
if @message.save
ActionCable.server.broadcast 'messages',
body: @message.body,
user: @message.user.username,
time: @message.created_at
head :ok
end
end
end
У меня есть @message
, определенное в действии, и оно должно быть передано в файл js.erb.Но это не так.Почему?