使用Rails编辑时自动填充表单值

时间:2011-11-02 16:08:00

标签: ruby-on-rails database ruby-on-rails-3 forms

我有一个表格,我从new.html.erb复制并将其放在edit.html.erb中。我基本上想要相同的表单,但如果数据库中已存在表单字段的值,我希望将它们拉入表单进行编辑。我现在有这样的事情:

<%= form_for @user do |f| %>
<% if @user.errors.any? %>
<div class="error_messages">
  <h2>Form is invalid</h2>
  <ul>
    <% for message in @user.errors.full_messages %>
      <li><%= message %></li>
    <% end %>
  </ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %>
<%= f.text_field :name %>
 </div>
 <div class="field">
<%= f.label :email %>
<%= f.text_field :email %>
</div>
<div class="field">
<%= f.label :password %>
<%= f.password_field :password %>
</div>
<div class="field">
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
</div>
.
.
.
.

<div class="actions"><%= f.submit %></div>
<% end %>

如何从数据库中提取以填入具有适当值的字段?

1 个答案:

答案 0 :(得分:5)

如果您在控制器的“编辑”操作中设置@user,则会自动执行此操作 - 例如

def edit
  @user = User.find(params[:id])
end

您可能还会考虑将表单包含为部分表单而不是重复表单来干掉您的代码 - 这个link提供了一般性的想法