0

在我的页面左侧有一个用户已经创建的文档列表。以及用于创建/编辑文档的表单。遵循页面设计方式的表示。

| list of documents| Edit/Create documents|
|                  |                      |
|                  |                      |

我正在尝试执行以下操作

1)在页面首次加载时显示用于创建新文档的表单。然后在按钮上单击重新加载包含更新列表和新创建文档的页面。

2)当用户单击现有文档之一时,我想更新表单以显示文档的详细信息。

我在想partials将是做到这一点的方法。

我已经完成了(1)的一部分。现在我正在尝试加载现有文档的详细信息。

当我尝试显示现有文档的详细信息时会显示此错误。

documents/_form.html.erb where line #1 raised:

undefined local variable or method `document' for #<#<Class:0x007ffe96ff30b0>:0x007ffe96f0e118>
Extracted source (around line #1):

1: <%= form_for document do |f| %>
2: <table>
3:      <tr>
4:      <div class="field">
Trace of template inclusion: app/views/documents/edit.html.erb

EDIT.html.erb

<h1>Editing document</h1>

<%= render 'form' %>

索引.html.erb

    <div id="docList">
    <%= search_field(:user, :document) %>

    <% @documents.each do |document| %>
            <li><%= link_to document.name, edit_document_path(document.id) %></li>
    <% end %>
    <br />

    <%= link_to 'New Document', new_document_path %>
    </div>
    <div id="docEdit">
            <%= render :partial => "form", :locals => { :document => Document.new } %>
    </div> 

_form.html.erb

<%= form_for document do |f| %>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :notes %><br />
    <%= f.text_area :notes %>
  </div>
   <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

更新 **documents_controller.rb**

 #GET /documents/new
  # GET /documents/new.json
  def new
    @document = Document.new
    @document.user = current_user

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @document }
    end
  end

  # GET /documents/1/edit
  def edit
    @document = Document.find(params[:id])
  end

谢谢

4

1 回答 1

1

尝试这个:

<div id="docEdit">
    <%= render "Folder_name/form", document: Document.new  %>
</div> 

UPD:当您访问 /documents/10/edit 时,控制器在编辑操作中找到 id=10 的 doc,并将 var @document 中的 doc 返回到 edit.html.erb。在此模板中,您调用了 render 'form',将 var @document (render 'form', document: @document) 传入本地 var 文档。只需添加您的 edit.html.erb:

<%= render 'form', document: @document %>
于 2013-03-30T22:19:22.823 回答