私はRuby on Railsを学んでいます。私は、Railsアプリケーションを介してクライアントからサーバーへの情報転送を概念的かつ具体的に追跡し、応答としてクライアントに返すことにしました。ルートとアクションに対するリクエストの関係
私がフォローしているのは投稿コントローラと新しいアクションをルーティングする「新しい投稿」リンクをクリックすることです。これは新しいアクションの内容です:@post = current_user.posts.build
。私の考えは、メモリ(.build)内のオブジェクトを作成し、ポストテーブルをcurrent_user(Deviseから)に接続します。現在のユーザは、モデルを通って来るユーザテーブルからのデータです。このオブジェクトは@post
変数に割り当てられています。
current_userと投稿の関係は100%明確ではありませんが、投稿はcurrent_userに含まれているようです。概念的にこれを見るための良い方法はありますか?
この@post
オブジェクトは、新しいビューとともにクライアントに送信されます。新しいビューでは、これは次のとおりです。
<%= simple_form_for @post, html: { class: 'form-horizontal', multipart: true } do |f| %>
<div class="form-group">
<%= f.input :image %>
</div>
<div class="form-group text-center">
<%= f.input :caption %>
</div>
<div class="form-group text-center">
<%= f.button :submit, class: 'btn-success' %>
</div>
<% end %>
私はここで何が起こっているか完全に理解していません。私は@post
変数がこのループに組み込まれていると思うし、これらの入力はそれぞれイメージとキャプションの列に入れられ、infoは他の列に入れられます。これは、@post
オブジェクトに投稿テーブルの列が含まれているために可能です。私はここで何が起こるか考えて正しいですか?
このオブジェクトのイメージとキャプションで、クライアントはsubmitを押して別の要求を開始します。このリクエストはPOSTメソッドを使用するため、投稿コントローラと作成アクションにルーティングされます。これは、作成アクションの最初の行です:@post = current_user.posts.build(post_params)
。
これは私の理解が崩壊し始めるところです。私はどのように@post
画像とその "内側"のキャプションを持つオブジェクトが作成アクションを入力するか分からない。ルートはそれを直接作成アクションに送りますか?これは、作成アクションに引数がない理由ですか?少なくとも鉱山はそうではなく、行動が議論を引き取ることができるかどうかはわかりません。彼らはできますか??
@post
オブジェクトで発生している画像、キャプションなどのデータは、いったん作成アクション内に入れられますか?それは内部にあるものに置き換えられますcurrent_user.posts.build(post_params)
?実際にはcurrent_user.posts.build(post_params)
の内部には何がありますか?このcurrent_user.posts.build
の@post
オブジェクトはcurrent_user.posts.build(post_params)
の代わりになりますか?私はこの方法がcurrent_user.posts.build
ポスト表中の質量移行のための画像とキャプション列をホワイトリストされて作っていると思い
def post_params
params.require(:post).permit(:image, :caption)
end
:
構築するために送られたpost_params引数は、この方法です。
私がこれをより明確に理解するのを助けることができる誰かに事前に感謝します! CURRENT_USERと支柱の間
したがって、 'current_user.posts.build'は、' current_user.posts.build(post_params) 'でデータを使用できるようにします。アクション??データがフォームからアクションを作成する方法はまだ100%ではありません。私はそれが新しいアクションの中で '@ post'に置かれていることを知っていますが、それを作成アクションの' @ post'にどのように入れていますか?そして、 '@ post'変数の理由は、ビュー内のブロックでそれを使用するためです。 '@ post'の代わりに' current_user.posts.build'を使用できますか? – alucinare
新しい '@ post'は作成するために転送されません。それは別の要求サイクルです。 current_user.posts.build(post_params)は、新しい '@ post'を作成し、それに着信データを入力します。 –
これは、受信データはどこから来ますか?入ってくるデータはフォームのものですよね?そしてフォームはそのデータを新しいアクションから '@ post'に入れました、そうですか?それとも正しいことではありませんか? 'current_user.posts.build(post_params)'が '@ post'変数に割り当てられていますが、' current_user.posts.build(post_params) 'はどこからデータを取得するのですか?フォームとの関係は何ですか? – alucinare