18164


Railsの`form_for`ですが、

[code]

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

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


CC BY-SA 3.0
2015-10-27T00:05:14.800
18099
2015-10-28T08:19:02.943
9008
question
ruby-on-rails
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>


CC BY-SA 3.0
2015-10-28T08:19:02.943
18164
2015-10-28T08:19:02.943
2017-05-23T12:38:55.250
-1
4072
18099
answer