2010-11-19 14 views
2

Okay, ich ziemlich neu, so bin zu Rails und ich versuche, die folgenden ohne Erfolg zu tun:Schienen Teilansicht Sollwert von Formularfeld

ich ein Objekt haben (aus meiner Active Record), die ein Projekt, das n enthält Unterprojekte, die n Aufgaben enthalten. Jetzt möchte ich für jeden eine Teilansicht.

Also habe ich von dem Projekt machen sehen das Teilprojekt mit dem folgenden Code:

<%= render(:partial => 'subproject', :collection => @project.sub_projects) %> 

In meinem Teilprojekt Teilansicht genannt _subproject.rhtml (nehmen Sie den Code zu einem guten ol Rails 1.2.3 Projekt), so kann ich die Daten wie folgt zugreifen:

<%= subproject.name %> 

, dass der Name in Ordnung drucken wird, aber wenn ich versuche, ein Textfeld zu erzeugen, das wird nicht funktionieren:

<%= text_field 'subproject', 'name' %> 

Aber dieser Wille:

<%= text_field 'subproject', 'name', :value => subproject.name %> 

Was mache ich falsch?


Edit: Changed Titel wegen meines Problems wird der Wert nicht vorbei, aber es in einem Formularfeld angezeigt wird.


Edit2: Als mein Controller-Code angefordert:

@project = Project.find(params[:id]) 

Antwort

3

Sie können schreiben:

<%= render(:partial => 'subproject', :collection => @project.sub_projects) %> 

als

<%= render :partial => @project.sub_projects %> 

Dies wird jedes Teilprojekt mit der Render sub_projects/_sub_project.html.erb teilweise. Eine kleine Abkürzung. Diese

:

<%= text_field 'subproject', 'name' %> 

sagt ein text_field erstellen genannt: Teilprojekt [name], aber macht es keinen Wert. Sie müssen den Wert übergeben, den Sie festlegen möchten (der Code, der funktioniert).

Je mehr idiomatische Weg dies jetzt gerade mit form_for:

<% form_for @subproject do |f| %> 
    <%= f.text_field :name %> 
<% end %> 

Oder wenn Sie mit formtastic (https://github.com/justinfrench/formtastic), was fantastisch ist, Sie‘ d schreiben:

<% semantic_form_for @subproject do |f| %> 
    <%= f.input :name %> 
<% end %> 

Ich hoffe, das hilft!

+0

danke für deine vorschläge habe ich den netteren form_for code implementiert, aber der wert wird immer noch nicht gesetzt. Wenn ich den Code in der obigen Teilansicht (die den Projekt-HTML-Code erzeugt) verwende, wird der Wert gesetzt. Weißt du, warum das passiert? – Mark

+0

poste deinen Controller Code und deinen View Code. – jonnii

+0

Mein Ansichtscode, den ich bereits gepostet habe, in meinem Controller, soweit mein Ruby-Wissen mir sagt, dass eine Member-Variable verwendet wird, um den Wert zu halten, und dann in der Ansicht verwendet wird. Aber wenn ich versuche, partiell in einer Ansicht zu rendern, scheint mein "sub-partiell" nicht den Weg aufzuzeigen, wie er dokumentiert ist. Und ich benutze v1.2.3 von Rails (plus ich bin ziemlich neu zu Ruby (on Rails)) .. – Mark