什么是创建编辑表单的最佳方法?

时间:2015-02-05 13:35:38

标签: ruby-on-rails ruby twitter-bootstrap simple-form

我正在使用Ruby on Rails中的应用程序(Ruby 2 - Rails 4 - Bootstrap 3)

我使用了simple_form gem来构建表单,比如注册和注册,但是如何创建一个从数据库加载对象并允许用户编辑细节的表单?

假设我们在数据库中有一个Product表,我想创建一个表单,将该产品的详细信息加载到表单中,并允许用户编辑产品的描述,价格等。

我看了看但仍不清楚。

感谢。

1 个答案:

答案 0 :(得分:4)

首先,您需要将视图中的链接添加到编辑操作,您可以将产品作为参数发送到索引(app / views / products / index.html.erb)。看起来应该是这样的:

<%= link_to 'Edit', edit_product_path(product) %>

然后,您需要确保在Products控制器(app / controllers / products_controller.rb)中有编辑操作:

 def edit
 end

现在您的edit.html.erb(app / views / products / edit.html.erb)应如下所示:

<h1>Editing product</h1>

<%= render 'form' %>

<%= link_to 'Show', @product %> |
<%= link_to 'Back', product_path %>

最后,您要渲染的表单应位于app / views / _form.html.erb中,如下所示:

<%= form_for(@product) do |f| %>
  <% if @product.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@product.errors.count, "error") %> prohibited this product from being saved:</h2>

      <ul>
      <% @product.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :price %><br>
    <%= f.text_field :price %>
  </div>
  <div class="field">
    <%= f.label :description %><br>
    <%= f.text_field :descriptions %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

提示:当您使用rails生成Scaffold生成Scaffold命令时,它会自动为您的模型以及我上面提到的所有视图和类创建编辑,删除,显示和新操作。

rails generate Scaffold Product name:string description:text price:decimal

希望它有所帮助!