2010-02-11 72 views
3

我正試圖在rails上學習ruby。我一直在經歷一個教程,但我陷入了困境。Ruby on rails:start_form_tag方法

它讓我在輸入表格中使用start_form_tagend_form_tag。但是,當我訪問該頁面時,我得到了undefined method 'start_form_tag' for #<ActionView::Base:0x2556020>

在教程中,他們解釋說這兩行被翻譯爲<form action="/book/create" method="post"></form>。因此,我試着把它們放在一起。形式出來上來了,但是當我提交表單,我得到這個錯誤:ActionController::InvalidAuthenticityToken in BookController#create

所以,

  1. 我有什麼做的就是start_form_tag正確翻譯?
  2. 這是否導致InvalidAuthenticityToken錯誤?

回答

9

我開始學習Rails時遇到了同樣的問題。你有舊的Rails版本的教程。 start_form_tag不再使用。我認爲學習Rails最好的地方是Rails Guides

所以,現在你的問題。您可以添加的形式是這樣的:

<% form_for @book do |f| %> 
    <%= f.label :title %> 
    <%= f.text_filed :title %> 
    ... 
    <%= f.submit 'Create' %> 
<% end %> 
4

您正在閱讀的教程已過時。表格現在使用form_for塊建立。

你可以找到一個更新的(和官方)指南here。你可以用它來完成你現在正在做的教程。

3

試試這個:

<h1>Add new book</h1> 
<%= form_tag :action => 'create' %> 
<p><label for="book_title">Title</label>: 
<%= text_field 'book','title' %></p> 
<p><label for="book_price">Price</label>: 
<%= text_field 'book','price'%></p> 
<p><label for="book_subject">Subject</label>: 
<%= collection_select(:book,:subject_id,@subjects,:id,:name)%></p> 
<p><label for="book_description">Description</label><br/> 
<%= text_area 'book','description'%></p> 
<%= submit_tag "Create"%> 
<%= link_to 'Back',{:action=>'list'}%>