Рубин на рельсах: метод start_form_tag - PullRequest
3 голосов
/ 11 февраля 2010

Я пытаюсь выучить рубин на рельсах. Я прошел учебник, но я застрял.

Я использую 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?

Ответы [ 3 ]

9 голосов
/ 12 февраля 2010

У меня была такая же проблема, когда я начал изучать 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 голосов
/ 12 февраля 2010

Учебное пособие, которое вы читаете, устарело. Формы теперь создаются с использованием блоков form_for.

Более актуальное (и официальное) руководство можно найти здесь . Вы, вероятно, можете использовать его для завершения учебника, который вы сейчас делаете.

3 голосов
/ 31 июля 2011

Попробуйте это:

<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'}%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...