2017-07-20 26 views
-2

私は、Ruby on Railsのを学ぶために始めています。本当に問題を理解していることの1つは、データが.html.erbファイルからコントローラファイルに転送される方法です。データ(Ruby on Railsは)

は、以下のnew.html.erb

<%= form_for :post, url: posts_path do |f| %> 
    <p> 
    <%=f.label :title %> 
    <%=f.text_area :title %> 
    </p> 
    <p> 
    <%=f.label :body %> 
    <%=f.text_area :body %> 
    </p> 
    <p> 
    <%=f.submit %> 
    </p> 
<% end %> 

を検討して、今、私のコントローラファイル、posts_controller.rb

class PostsController < ApplicationController 

    def index 
    @post=Post.all 
    end 

    def new 
    end 

    def create 
    @post=Post.new(post_param) # 
    @post.save 
    redirect_to @post 
    end 

    def show 
    @post=Post.find(params[:id]) 
    end 

    private 

    def post_param 
    params.require(:post).permit(:title, :body) 
    end 

end  

オーケー、私は理解していない部分があります。

  1. どのようにcreateメソッドが 'post'の値を取得しますか?
  2. あなたは<%= form_for :post, url: posts_path do |f| %>が実際に何をするか説明できますか?
+0

あなたが言う、あなたがこの方法自体に '@のPOST'について話している「どのように作成する方法は、『ポスト』の値を取得しませんか」?あるいは.erbファイルの ':post'について話していますか? – eiko

答えて

0

のform_forはposts_pathに向けたHTTP POSTリクエストを送信します。 あなたのroutesファイルは、おそらく「資源:ポスト」のようなものと言う自動的にあなたのコントローラで「作成」メソッドに任意のHTTP POST要求を指示し を、。このPOSTリクエスト内 、フォームに入力されたデータはすべてのparams変数の内側になります。