2016-03-31 3 views
0

私はform_forを持っており、対応するsubmitコントローラメソッドで変数にアクセスしたいと思います。私は私が何を意味するか説明します: 私は次のようにレンダリングされたオブジェクトのリストを持っている:対応するコントローラメソッド内のオブジェクトform_forにアクセス

<%= render medical_situations %>

私は、各オブジェクトがどのように見えるかを指定medical_situation.html.erbファイルを対応する、どこの内側次のようにのform_forそれぞれが私が持っている:

<%= form_for medical_situation, {url: :send_to_pool_medical_situations, method: :post, remote:true} do |f| %>

対応するコントローラメソッドで、その特定のmedical_situationオブジェクトにアクセスしたいと思います。出来ますか。私は適切なオブジェクトを見つけるためにmedical_situation_idを渡すことができることを知っていますが、私は余分な要求とコードなしでそれを行うことができます興味があります。私のsend_to_pooメソッドでは、そのオブジェクトを更新したいと思います。

+0

あなたがのparamsを持つオブジェクトを送信したいわけ?、最善の方法は、たぶん、あなたと静的変数を宣言することによって、これを達成することができ、コントローラにオブジェクトのIDを送信し、そこ – Thorin

+0

を、オブジェクトを作成することです'@@'シンボルをコントローラに挿入し、ビューページでそれを更新しようとします。 –

答えて

1

対応するコントローラメソッドでは、その特定の medical_situationオブジェクトにアクセスしたいと思います。

httpはステートレスなので、何もできません。新しい要求はそれぞれ前の要求とは独立して処理されます。アプリケーションはレスポンスレンダリング後にメモリ内の変数をすべて削除し、新しく新しいコントローラインスタンスを使用して新しい受信要求処理を最初から開始するため、medical_situations変数はもう存在しません。どのオブジェクトを表示するかをアプリケーションに指示する唯一の方法は、オブジェクトIDをリクエストパラメータに渡すことです。このオブジェクトをデータベースからフェッチして、コントローラから表示することができます。

https://stackoverflow.com/questions/4913763/what-does-it-mean-when-they-say-http-is-stateless

Why say that HTTP is a stateless protocol?

1

いいえ、あなたはビューページからコントローラにオブジェクトを送信できるとは思いません。 オブジェクトのidを渡す必要があります。コントローラのparamsのIDを使用してオブジェクトを再度見つけなければなりません。