Railsのform_forにシンボルを与えるときはどのようなときか？


Railsの`form_for`ですが、

[code]

    <%= form_for :hoge do |f| %>
    <% end %>
    
[/code]

といったようにシンボルを渡せるようですが、基本的にオブジェクトを渡す例をネットでよく見かけます。シンボルを使う場面はどのようなときでしょうか？




シンボルを使うとよりシンプルなformタグが生成され、オブジェクトを渡すとそのオブジェクトに寄って良しなに出し分けてくれます。

以下`form_for :post`とします。  
具体的にはシンボルを使うと

[code]

    <form action="/posts" method="post">
    
[/code]

`@post = Post.new` したオブジェクトを使うと

[code]

    <form action="/posts/create" class="new_account" id="new_account" method="post">
    
[/code]

`@post = Post.find(1)` したオブジェクトを使うと

[code]

    <form action="/posts/update" class="edit_account" id="edit_account_1" method="post">
    <input name="_method" type="hidden" value="put">
    
[/code]

がそれぞれ吐かれます。

`new`や`edit`のviewを準備する時に、同じ`_form`部分テンプレートを利用した時、同じ書き方で出し分けてくれるのが便利。ということのようです。

と以下を翻訳しただけです。  
<https://stackoverflow.com/questions/957204/instance-variable-vs-symbol-in-
ruby-on-rails-form-for>




シンボルを使うとよりシンプルなformタグが生成され、オブジェクトを渡すとそのオブジェクトに寄って良しなに出し分けてくれます。

以下`form_for :post`とします。  
具体的にはシンボルを使うと

[code]

    <form action="/posts" method="post">
    
[/code]

`@post = Post.new` したオブジェクトを使うと

[code]

    <form action="/posts/create" class="new_account" id="new_account" method="post">
    
[/code]

`@post = Post.find(1)` したオブジェクトを使うと

[code]

    <form action="/posts/update" class="edit_account" id="edit_account_1" method="post">
    <input name="_method" type="hidden" value="put">
    
[/code]

がそれぞれ吐かれます。

`new`や`edit`のviewを準備する時に、同じ`_form`部分テンプレートを利用した時、同じ書き方で出し分けてくれるのが便利。ということのようです。

と以下を翻訳しただけです。  
<https://stackoverflow.com/questions/957204/instance-variable-vs-symbol-in-
ruby-on-rails-form-for>

