2009-06-05 73 views
11

我是新來的Ruby on Rails和我同在Mac OSX上2.3版本的工作。 我正在嘗試創建腳手架創建的相同功能,但僅限於我自己。 我創建了一個「後」控制器,視圖和模型。 在柱控制器,我有以下:實例變量與符號(的form_for)

class PostController < ApplicationController 
    def index 
    end 

    def new 
    @post = Post.new 
    end 
end 
在new.html.erb

,我有以下:

<h1>New Post</h1> 

<% form_for :post do |f| %> 

    <%= f.text_field :title %> 

<% end %> 

我注意到,在支架中生成的代碼,使用該實例變量@post for form_for幫手。爲什麼他們使用的實例變量中,如果通過該符號的支架產生的形式:在後做的form_for完全相同的事情,而一個符號需要改變路由的配置?

非常感謝你, 尤瓦

回答

15

如果你使用符號:它張貼創建

<form action="/posts" method="post"> 

,如果你使用實例@post

爲@post = Post.new你會得到

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

爲@post = Post.find(1)您將獲得

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

如果你有不同的形式爲你的新和你的編輯沒有什麼大不了,但更多的比不新的和你的編輯形式將是相同或接近它

所以如果你使用實例變量@post你可以把所有的表單代碼爲_form並調用部分,如果你在一個新的記錄或現有的記錄

+0

非常感謝你通過它會處理基礎上休息。這使得它清楚:) – 2009-06-05 18:09:12

0

一個可能的原因是,它使窗體創建一個新的職位更類似於代碼的形式,以更新現有職位的代碼。

+0

感謝您的回答 – 2009-06-05 18:09:30