覚えておくべきことの1つは、反応性レコードの遅延読み込みレコードと属性です。したがってレンダリングのどこかで、特定のレコード/属性にアクセスしない限り、その属性はクライアントに表示されません。
その掲示が、ここではいくつかの助けで、あなたのコードのビットより多くなく、よりを伝えるのは難しい:
class Foo < React::Component::Base
param :user, type: User
def render
"user.name = #{user.name}"
end
end
とどこかのコントローラでのどちらか:
は、あなたのコンポーネントは次のようになりますと言うことができますレイアウトでこれを行う:
render_component '::Foo', {user: User.first}
あなたは、このような非常に単純なものを試してみることができます。
レンダリング中にコンポーネントがそのユーザーの名前属性を検索すると、ビューをレンダリングし、最初のユーザーのプレースホルダがコンポーネントに送信されますサーバーからフェッチするためにキューに入れられます。レンダリングが完了し、最終的にサーバーからデータがダウンロードされ、ローカルモデルのデータが更新され、そのデータを表示するコンポーネントが再レンダリングされます。
事前レンダリング中に、すべてが上記のようにサーバー内部で発生し、コンポーネントがレンダリングされると、最終的なhtmlはコンポーネントのレンダリングに使用されたすべてのモデルデータとともに、となります。最初のロード時にすべてが動作していれば、サーバーからのフェッチは表示されません。
だから、上記の小さな例を試す場合は、その後、あなたはこのようなことを言うことができるあなたのJavaScriptコンソールに入る:
Opal.User.$first()
、あなたは(私はから翻訳しています基礎となるモデルのデータ構造が返さ表示されますがJS上のルビーにJS ...
Opal.User.$first().$name()
そして、あなたも)、少なくとも2つのユーザモデルがあると仮定すると(これを行うことができます:Rubyのメソッドはすべて、あなたがこれを行うことができます$)
で始まる
Opal.User.$find(2).$name()
あなたはすべき"DummyValue"のようなものが返ってきましたが、コンソールにサーバーのフェッチサイクルがあります。上記のコマンドを繰り返すと、実際の値が返されます。
あなたはより多くの助けただ、このことを考え