2010-02-11 3 views
3

Я пытаюсь изучить рубин на рельсах. Я прошел учебник, но я застрял.Ruby on rails: start_form_tag метод

Он имеет меня с помощью start_form_tag и end_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'}%>