2013-03-30 18 views
0

在我的页面的左侧有一个用户已经创建的文档列表。并创建/编辑文档的表单。在表示页面的设计之后。ROR:使用部分

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

我尝试做以下

1)显示形式创建一个新文档时对按钮的页面第一loads.And点击与更新的列表,新创建的文件重新加载页面。

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

我在想,部分会是这样做的方式。

我有(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' %> 

Index.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 %> 

UPDATE ** ** 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 

感谢

+0

请出示您的控制器代码。 – sscirrus

+0

我已经添加了文档控制器的代码。 – jsp

回答

1

试试这个:

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

UPD:当你访问/文档/ 10 /编辑,在控制器编辑操作找到id为10的文档,并将var @document中的doc返回到edit.html.erb。在这个模板中,你可以调用render'form',在那里你传入你的本地var文件var @document(render'form',document:@document)。 只需添加在您的edit.html.erb:

<%= render 'form', document: @document %> 
+0

我没有问题显示新文档的窗体。当我尝试显示for for现有文档时出现错误。 – jsp

+0

您可以显示代码,您可以在这里为现有文档调用这个部分?如果您的edit.html.erb模板包含部分调用,请将文档传递给他,如呈现“folder_name/form”,文档:@document? – hellaxe

+0

我已经添加了该代码。它是index.html.erb – jsp