これは実際に私の頭を傷つけています。私がやろうとしていることは、まっすぐ進むはずですが、何らかの理由で私はそれを働かせることができません。リアクションフロントエンドからRails APIエンドポイントにフェッチしようとしたときにNoMethodErrorが発生する
Reactコンポーネントに表示するように設定したRails APIエンドポイントからいくつかの情報を取得しようとしているので、
componentDidMount() {
fetch(`/api/v1/coffee_formulas`)
.then(response => response.json())
.then(body => {
this.setState({ formulas: body })
})
}
をそしてAPIエンドポイントは、次のようになります:
このようなルックスをフェッチマイ
def index
formulas = current_user.coffee_formulas
render json: { status: 'SUCCESS', message: 'Loaded coffee formulas', coffee_formulas: formulas }, status: :ok
end
私を混乱させている事、私はhttp://localhost:3000/api/v1/coffee_formulas
に移動して、正確に見ることができるという事実があります私はReactの終わりに乗りたいJSONです。私の前提は、私が同じ点にフェッチすることができたが、私は何かが欠けていると思う。
カップルの事は、私が正常に同じAPIを投稿することができています
- 注意します。
- 私はGoogle OmniAuthを使ってセッションとcurrent_userを生成しています。
formulas
の状態を同じ結果で少し異なる方法で設定しようとしました。 (例:formulas: body.formulas
、formulas: body.coffee_formulas
など)- 私は私の端末で見ている正確なエラーがある:
NoMethodError (undefined method 'coffee_formulas' for nil:NilClass):
- 私のコンソールでエラーが
500 (Internal Server Error)
私はこれはかなり簡単なことだと思ったが、私はここでかなり重要な詳細が欠落していると思う。どんな提案も非常に高く評価されます!
私はまだ私が得意ではないことが分かりません。 'formula = current_user.coffee_formulas'を' formula = CoffeeFormula.all'に変更してデータベースのすべてのcoffee_formulasを取得すれば、私の端末でエラーは発生しませんが、何を見ても何も出ません'formula'の状態はです。もう一つは、current_userがどのように 'nil'となるのかということですが、' http:// localhost:3000/api/v1/coffee_formulas'に行くと、current_userに関連する情報だけが表示されます。アカウントの更新も必要に応じて切り替えます。 –
'index'メソッドのシグネチャの直後にブレークポイントEg [pry](https://github.com/pry/pry)を追加して、リアクションを介して呼び出されたときにcurrent_userの内容を確認してください – sameera207
あなたは@awesome_treehouseですおそらく 'devise'宝石を使用しています。コントローラに次の行を追加してもよろしいですか? 'before_action:authenticate_user! ' このコールバックがなければ、current_userは解決されません。 – Gregy