2016-08-25 4 views
0

私は反応記録でReactRBを使用しようとしています。react.rbでデータを表示していません

だから、レンダリングの部分に取り引きがあると思います。 React Component classparam :user, type: Userを設定すると、データin my tableが表示されません。もちろん、ReactRBのこの要件として、パブリックフォルダのモデルユーザー。

まあ、コンソールで私はそのサーバーを参照してくださいis fetching nothing, but right data returned

私が紛失していることはありますか?助けてくれてありがとう!

答えのキーがin this screenshot

詳細は、データが 反応レコードは、それをデコードするのJSON BLOBとしてサーバーから戻ってくるということですが、事実上のカウントは、あなたはJSONにしようとすること単純な文字列を解析すると、エラーが発生します。 オパール0.10はもはや標準誤差を発生させないので、全体がちょうどハングアップします。

答えて

2

ためhttps://gitter.im/reactrb/chatでドロップする必要がある場合、これは、より多くの詳細については、最善のフォーラムではないかもしれない...そこに既知の問題がオパールhttps://github.com/opal/opal/issues/1545であり、これは問題の原因となります反応記録。オパールを使用していないことを確認してください。0.10

1

覚えておくべきことの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"のようなものが返ってきましたが、コンソールにサーバーのフェッチサイクルがあります。上記のコマンドを繰り返すと、実際の値が返されます。

あなたはより多くの助けただ、このことを考え

関連する問題