2013-03-30 3 views
0

В левой части моей страницы есть список документов, которые пользователь уже создал. И форма для создания/редактирования документов. После представления способа создания страницы.ROR: использование partials

| 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/редактировать, контроллер в изменить действие найти doc с id = 10 и вернуть doc в var @document в edit.html.erb. В этом шаблоне вы вызываете команду render 'form', где вы передаете в свой локальный документ var var @document (render 'form', document: @document). Просто добавьте свой edit.html.erb:

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

У меня нет проблемы с отображением формы для нового документа. Моя ошибка возникает, когда я пытаюсь отобразить для существующего документа. – jsp

+0

Можете ли вы показать код, где вы называете это частичным для существующего документа? Если ваш шаблон edit.html.erb содержит вызов частичного, передайте ему документ, например render «имя_папки/форма», документ: @document? – hellaxe

+0

Я уже добавил этот код. Он является частью index.html.erb – jsp