これは私に大きな頭痛を与えています...
そのため、ユーザーのプレーヤーに関するさまざまな情報を一覧表示するサイドバーを必要とするアプリがあります。このサイドバーの 1 つのセクションは友達リストです。ここで、プレイヤー A がプレイヤー B にフレンド リクエストを送信すると、リクエストは自動的に B のサイドバーに記録されるはずです。これには WebSocket を使用するつもりです。
これが私のcp.js.coffe.erb
ファイルです (現時点では、ERB のスニペットはわずかしかありません。さらに多くの負荷がかかるため、最初にこれを機能させることをお勧めします):
$ ->
$("#cp").accordion()
if `"WebSocket" in window`
socket = new WebSocket("ws://localhost:8080")
socket.onopen = =>
console.log("Connection Open")
init = {
sender: "cp"
action: "init"
user: <%= @user.id %>
token: <%= cookies["remember_token"] %>
}
socket.send(init.to_json)
socket.onerror = (e)=>
console.log(e)
socket.onclose = =>
console.log("Closed")
socket.onmessage = (m)=>
console.log("Recieved: #{m.data}")
msg = m.data.JSON.parse
switch msg.action
when "ret_init"
when "friend_udt"
refreshFriend()
refreshFriend() ->
html = "<%= j render 'layouts/friends' %>"
$('#friends').empty()
$('#friends').add(html)
理論的には、コード自体は問題なく動作しますが、問題はRails ではアセット パイプラインで ERB を使用できないため、このファイルはファイルは、コントローラー内で宣言された変数にアクセスしたり、app/views/layouts
.render
メソッド (または他のほとんどの ERB メソッド) を使用したりすることはできません。
ここに問題があります:私は自分のapplication.html.erb
ファイルに上記のファイルを含めることができず、AJAXでファイルを要求することを検討しましたが、Javascriptをすぐに1回だけ実行するという私の理解から、これのメソッドを常に実行する必要がありますサイドバーを更新できます。
このファイルを ERB および CoffeScript と連携してページで継続的に使用できるようにする方法はありますか? AJAX 要求メソッド全体を誤解していますか?
@nzifnab の JS に関するサポートに感謝します。今、私の友人のパーシャルは次のようになります。
<ul id="friendlist">
<% if Relation.find_by(owner: @user.id, type: "freq") != nil %>
<% Relation.find_by(owner: @user.id, type: "freq").each do |r| %>
<li class="friend-request-cp"><%= link_to "/#{User.find(r.character).name}" %></li>
<% end %>
<% end %>
<% if Relation.find_by(owner: @user.id, type: "friend") != nil %>
<% Relation.find_by(owner: @user.id, type: "friend").each do |r| %>
<li class="friend-cp"><%= link_to "/#{User.find(r.character).name}" %></li>
<% end %>
<% end %>
</ul>
各アイテムに 2 つの異なるスタイルを適用する必要があるため、ここで ERB を使用しています。ページが最初にナビゲートされたときにロードされるため、これは正常に機能しますが、私のコードは、新しい相互作用の通知が届くたびにその部分を再レンダリングすることになっていました。次に、データベースのデータを使用してリストを再作成します。これを行うより効率的な方法はありますか?hamlcoffeeassets
あなたが私に見せてくれた宝石でまだこれを行うことができますか?
少し話が逸れますが
、私はWindows 7 で Ruby 2.0.0-p247 と Rails 4 を使用しています。Ubuntu とは大きく異なる gem とのいくつかの主要な互換性の問題があるため、これを含める必要があると感じました。13.04 から 13.10 に更新すると、その OS のすべての Ruby Gem が壊れたため、Ubuntu から Windows に移行する必要がありました。修正を探す必要はありません。文字通り、このアプリを構築するのに 4 日しかありません。