Ich bin sicher, ich vermisse etwas Einfaches, aber nicht bewusst, die richtige Terminologie in Rails, ich kann nicht finden, was ich bin gesucht ....Erstellen Sie ein Kind-Modell in Schienen (Angehörige_to) und Voreinstellung der Eltern-ID
A Project
Modell has_many Task
und ein Task
belongs_to ein Project
.
Mein routes.rb
resources :projects
resources :tasks
hat, kann ich erstellen/bearbeiten/ändern Projects
ganz gut, und ich kann auch Tasks
bearbeiten ... aber ich kann nicht zu arbeiten scheinen, wie eine neue Task
zu schaffen, Zuweisen der richtigen Project
dabei.
Meine Project
Seite (zB. Projekte/2) hat einen Add Task Link, der zu/task/new geht, also verliere ich die Verbindung. Ich möchte keine geschachtelte Ressource erstellen, da Tasks
, einmal erstellt, durch ihre ID eindeutig identifiziert werden kann und in Zukunft auch viele andere Modelle hat.
Gibt es hier eine schnelle Lösung?
bearbeiten Nun, ich habe es geschafft, dies zu lösen .... es ist hässlich und es ist schrecklich und ich bin mir nicht sicher, warum es so sein muss, aber es funktioniert.
Meine Routen:
resources :projects do
resources :tasks, :only => [:new]
end
resources :tasks, :except => [:new]
Meine Aufgabe Controller:
def new
@project = Project.find(params[:project_id])
@task = @project.tasks.build
end
# Process the form for creating a new task.
def create
@project = Project.find(params[:task][:project_id])
@task = @project.tasks.build(params[:task])
if @task.save
flash[:success] = 'Task created.'
redirect_to project_path(@project)
else
render 'new'
end
end
Und meine Aufgabe Form:
<%= semantic_form_for @task do |f| %>
<%= render 'shared/form_message', :object => f.object %>
<%= f.inputs do %>
<%= f.input :name %>
<%= f.input :project %>
<% end %>
<ul class="formActions">
<li class="list"><%= link_to 'Back to list', project_path(@task.project) %></li>
<li><%= f.submit "Save" %></li>
</ul>
<% end %>
Ich möchte nicht auf das Projekt Feld haben, setzen das Formular, und ich bin immer noch nicht sicher, warum ich muss, und auch warum ich brauchte: Erstellen aus der verschachtelten Routen. Es scheint auch ziemlich mühsam, für solch eine gemeinsame Aufgabe, aber es funktioniert, also .... Ich denke, es ist alles gut.
hmm, das hat meine Routen geändert ... aber ich habe immer noch ein bisschen Ärger. Ich habe Änderungen an meinem TaskController vorgenommen, sodass jetzt Tasks über das übergeordnete Projekt erstellt werden, aber ... es funktioniert immer noch nicht. :( – sevenseacat
Kennen Sie irgendwelche Tutorials, die diese Art von Sache zu tun, Anfang bis Ende? – sevenseacat
Sie möchten vielleicht einen Blick auf http://railscasts.com/episodes/139-nested-resources – aNoble