リアルタイムアプリについて学ぶために、Entangledを使用して基本的なメッセージボードを作成しようとしています。私のAngularアプリは、私のEntangleレールコントローラにパラメータを送信しないのはなぜですか?
私はAngularアプリと、Entangled :: Controllerを含むMessages Controllerを備えたRailsバックエンドを持っています。このRailsコントローラは、Angularアプリケーションからフォームが送信されたときにリクエストを受信します。フォームはEntangledを使用して送信されます。 (サブミットをクリックすると、Angularコントローラで関数が起動され、バックエンドに新しいメッセージが作成され、そのバックエンドに登録されているすべてのクライアントが更新されます)。
SubmitをクリックするとAngular関数がトリガされます関数がフォームから正しい情報を受け取ることを知ってください:console.log($scope.message)
{socket: "ws://message-board-olliehm.c9users.io:8080/messages", username: "ggg", content: "gggggg"}
と表示され、ユーザフィールドに「ggg」、コンテンツフィールドに「gggggg」と表示されます。
問題は、これらのフィールドがRailsコントローラに到達していないことです。サブミットをクリックすると、正しいアクションがRailsコントローラでトリガされますが、パラメータには適切な情報が含まれません。def create
には{"controller"=>"messages", "action"=>"create"}
の "メッセージ"ハッシュと "ユーザ名"または "コンテンツ"キーはありません。
私はEntangledがユーザー名とコンテンツのフィールドで何をしているのか分かりません。
Redisは私には新しく、問題があるかどうかはわかりません。私はRedisをインストールし、Redis-serverはEntangledの必要に応じて実行しています。
$redis = Redis.new(:host => $IP, :port => 6379)
はここに私の角度コントローラです:私はRailsのコンソールで正常に接続すると、私は、データベース内のデータを入れさせるされ、以下のようにRedisの初期化子を持ってここに
var controllers = angular.module('controllers');
controllers.controller('MessageboardController', ['$scope','Message', function($scope,Message){
$scope.message = Message.new();
$scope.post = function() {
console.log($scope.message);
$scope.message.$save(function() {
$scope.$apply(function() {
$scope.message = Message.new();
});
});
};
Message.all(function(err, messages) {
$scope.$apply(function() {
$scope.messages = messages;
});
});
}]);
メッセージは、この工場を指し、 :
messageboard.factory('Message', function(Entangled){
return new Entangled('ws://message-board-olliehm.c9users.io:8080/messages');
});
そして、ここに私の角度ビューです:
<h1>Messageboard</h1>
<section class='row' ng-if='messages'>
<ul>
<li ng-repeat='message in messages'>
{{message.username}}
{{message.content}}
</li>
</ul>
</section>
<section class='row'>
<form ng-submit="post()">
<div class='form-group'>
<label for='username'>Message as</label>
<input ng-model='message.username' name='username' type='text'>
</div>
<div class='form-group'>
<input ng-model='message.content' name='message' type='text' placeholder='Write your message here'>
</div>
<div class='form-group'>
<input type="submit">
</div>
</form>
</section>
アドバイスは非常に高く評価されています。これは長期的な不満をもたらし、リアルタイム更新で何かを作成することに非常に熱心です。
私は今リアルタイムアップデートを行っていますが、角形フォームはまだパラメータを提出していませんすべてのメッセージが空白になります。形式: <形式ng-submit = "addMessage(メッセージ)"> 私はコンソールです。このメッセージの引数を記録すると、 (e {socket: "ws://message-board-olliehm.c9users.io:8080/messages"、username: "o"、content: "o"}) オブジェクトを詳細に表示するには、小さな矢印をクリックすると実際にユーザー名とコンテンツが「null」になります。 –