代码之家  ›  专栏  ›  技术社区  ›  David Oneill

rubyonrails:start\u form\u tag方法

  •  3
  • David Oneill  · 技术社区  · 16 年前

    我正在努力学习rubyonrails。我一直在复习教程,但我被卡住了。

    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. 我该怎么做才能让开始\表单\标签正确翻译?
    3 回复  |  直到 16 年前
        1
  •  9
  •   klew    16 年前

    当我开始学习Rails时,我也遇到了同样的问题。你有旧版本的Rails教程。 start_form_tag 不再使用。我认为学习Rails最好的地方是 Rails Guides

    所以,你现在的问题。您可以这样添加表单:

    <% form_for @book do |f| %>
      <%= f.label :title %>
      <%= f.text_filed :title %>
      ...
      <%= f.submit 'Create' %>
    <% end %>
    
        2
  •  4
  •   Veeti    16 年前

    你正在读的教程已经过时了。表单现在使用 form_for 阻碍。

    你可以找到一个更新的(和官方的)指南 here . 你可以用它来完成你现在正在做的教程。

        3
  •  3
  •   YuZhen    15 年前

    试试这个:

    <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'}%>
    
    推荐文章