2017-12-06 1 views
2

Ich bin stecken bei der Übergabe eines Variablenwerts vom Controller auf teilweise. Ich habe alle Daten von Fähigkeiten-Datenbank auf @skillSetData von der Steuerung kommen: SkillSetsControllerWeitergabe der Variablen von der Steuerung zu Teilansicht Schienen

def skillsetdata 
    @skillSetData = SkillSet.all 
end 

Der Code unten auf skill_set/skillsetdata.html.erb alle Daten angezeigt werden soll.

<% @skillSetData.each do |single_skill| %> 

    <option value="<%= single_skill.skillname %>"><%=single_skill.skillname %></option> 

<% end %> 

Aber ich bin nicht in der Lage die Variable übergeben, wenn skillsetdata.html.erb ein Teil also ist: _skillsetdata.html.erb. Der Code für die _skillsetdata ich geschrieben habe, ist:

<% skills_set_data.each do |single_skill| %> 
    <option value="<%= single_skill.skillname %>"> 
     <%=single_skill.skillname %> 
    </option> 
<% end %> 

Ich will es machen teilweise, weil es die Dropdown-Liste, die auf verschiedenen anderen Seiten gemacht werden muss. Eine der Seiten, die ich verwenden möchte, ist: static_pages/home.html.erb, die von verschiedenen Controllern ist, dh: staticPages. Der Code, den ich nach Hilfe versucht haben, ist:

<%= render partial: 'skill_sets/skillsetdata', locals: { skills_set_data:@skillSetData } %> 

Aber ich bin immer Fehler wie: nicht definierte Methode `jedes‘ für nil: NilClass in skill_sets/_skillsetdata.html.erb bei dem Versuch, nach Hause zu laden .html.erb. Ich bin nicht in der Lage, Daten zwischen verschiedenen Seiten von einem Teil zu übergeben.

Jede Hilfe mit Beispielcode wäre hilfreich.

+0

'Action :: UnknownFormat' ist ein anderer Fehler. Wie lautet der Code in Ihren Controllern? –

+0

Ich erkannte, der Fehler war eigentlich undefinierte Methode 'jedes 'für nil: NilClass in skill_sets/_skillsetdata.html.erb beim Versuch, load.html.html zu laden. – adhital

+0

Es gibt nur einen Grund, diesen Fehler zu bekommen. Die von Ihnen verwendete Instanzvariable ist null. Andernfalls, wenn das Partial nicht existiert, wäre 'Missing partially', wenn die lokale Variable seted nicht im Namen in der Partiellen übereinstimmt, dann 'undefined lokale Variable oder Methode' wenn @skillSetData keine' undefinierte Methode 'ist für nichts: NilClass'. Probieren Sie es aus, verwenden Sie "localhips: {skills_set_data: nil}" und sehen Sie, was passiert. –

Antwort

0

Zum Beispiel Variablen partials geben können Sie mit dem locals:

# view from 
<%= render partial: 'skillsetdata', locals: { skills_set_data: @skillSetData } %> 

Während in der lokalen erhalten Sie den Wert dieser Instanz-Variable, die jetzt eine lokale:

# partial 
<% skills_set_data.each do |single_skill| %> 
    <option value="<%= single_skill.skillname %>"> 
    <%=single_skill.skillname %> 
    </option> 
<% end %> 
+0

Ich versuche, die partielle aus einer Sicht static_pages/home.html.erb von verschiedenen Controller zu rendern, dh: staticPages # home. Wenn ich <% = render partially: 'skill_sets/skillsetdata' lokal habe: {skills_set_data: @skillSetData}%> auf home.html.erb. Beim Laden der Ansicht gibt es mir undefinierte Methode 'each 'für nil: NilClass Fehler im partiellen dh: skill_sets/_skillsetdata.html.erb. Wie gehen die variablen Daten zum partiellen? – adhital

+0

Es hängt davon ab, auf was Sie zugreifen und verwenden jeweils. '@ skillSetData' ist Ihre Instanzvariable, die im Controller definiert ist.' skills_set_data' ist die Variable, die im Partiellen verfügbar ist. Wie lautet der Code, der den Fehler verursacht? Können Sie ihn hinzufügen? –

+0

<% skills_set_data.each do | single_skill | %>. Dieser Teil des Codes in Teilweise: skill_sets/_skillsetdata.html.erb gibt den Fehler. Die Seite, die ich lade ist static_pages/home.html. – adhital

0

Ich schätze, dass Sie hier ein Problem haben: skill_sets/skillsetdata

<%= render partial: 'skill_sets/skillsetdata', locals: { skills_set_data:@skillSetData } %> 

Wie Sie schrieb, dass:

Der Code unten auf skill_set/alle Daten skillsetdata.html.erb anzuzeigen.

Dass der richtige Name ist: skill_set/skillsetdata

Hier richtige Name:

<%= render partial: 'skill_set/skillsetdata', locals: { skills_set_data:@skillSetData } %> 
+0

Die Datei befindet sich unter dem Ordner skill_sets, also glaube ich, dass es korrekt wäre skill_sets/skillsetdata – adhital

Verwandte Themen