2016-04-10 8 views
4

Dies scheint eine solche dumme, einfache Lösung (es wahrscheinlich ist), aber ich habe kein Glück auf der Web-SO und in anderen Bereichen zu suchen. Ich bekomme eine undefined method local variable error 'f' innerhalb meiner teilweise verwendeten aus meiner Sicht. Ich gehe davon aus, dass der "Do Block" irgendwie vor dem Erreichen des Partiellen endet, aber ich bin nicht 100% sicher.undefiniert Lokale Variable oder Methode `f‘ in einer Ansicht teilweise

Vielen Dank im Voraus für jede Hilfe. Ich lerne gerade Rails so bare mit mir, wenn es eine super einfache Lösung ist.

Teil

<% if user_admin_or_premium? %> 
    <div class="form-group"> 
    <%= f.label :private, class: 'checkbox' do %> 
     <%= f.check_box :private, :true %> Private Wiki? 
    <% end %> 
    </div> 
<% end %> 

Ansicht

<div class="col-md-8"> 
    <%= form_for @wiki do |f| %> 
    <div class="form-group"> 
     <%= f.label :title %> 
     <%= f.text_field :title, class: 'form-control', placeholder: "Enter Wiki Title" %> 
    </div> 
    <div class="form-group"> 
     <%= f.label :body %> 
     <%= f.text_area :body, rows: 10, class: 'form-control', placeholder: "Enter Wiki Body" %> 
    </div> 
    <%= render "wikis/form", f: f %> 
    <div class="form-group"> 
     <%= f.submit "Save", class: 'btn btn-success' %> 
    </div> 
    <% end %> 
</div> 

Full Error

NameError in Wikis#new 

undefined local variable or method `f' 

<% if user_admin_or_premium? %> 
    <div class="form-group"> 
    <%= f.label :private, class: 'checkbox' do %> 
     <%= f.check_box :private, :true %> Private Wiki? 
    <% end %> 
    </div> 

Antwort

9

Auslassen der partial: Schlüssel aus Render-Funktion:

<%= render "wikis/form", f: f %>

Einfache Lösung, aber sicher nicht auf der Hand, ich habe, bevor sie von der gleichen Ausgabe stapfte worden. Die obige Aussage entspricht der folgenden:

<%= render partial: "wikis/form", locals: { f: f } %>

+1

Dies. Übergeben Sie das f an das Partielle. –

+0

Noch kein Glück damit. Ich bekomme die gleiche Fehlermeldung. Ich habe die vollständige Fehlermeldung innerhalb des ursprünglichen Posts gepostet. Danke für die Hilfe übrigens! – Tucker

+0

Hat es geschafft, es mit Ihrer Hilfe zur Arbeit zu bringen, danke! – Tucker