Ich habe die Modelle Event, Meeting, TaskList und TaskItem. TaskList befindet sich in einer polymorphen Beziehung zu Event und Meeting. TaskItem wird in Tasklist verschachtelt, wie weiter unten in meinen Routen gesehen:Umleiten von der nicht polymorphen Seite einer Beziehung
concern :has_task_lists do
resources :task_lists, only: [:new, :index, :create, :show]
end
resources :events, concerns: :has_task_lists do
collection { post :import }
end
resources :meetings, concerns: :has_task_lists
resources :task_lists do
resources :task_items, only: [:new, :index, :create] do
member do
patch 'complete'
end
end
end
Verfahren erstellen kann nicht zurück in die Ansicht von TaskItem Umleitung wegen der Art und Weise der Steuerung polymorphe Routen behandelt. Mit einem Fehler am load_listable Verfahren in der Steuerung TaskItem Zeige ist
task_items_controller
def create
@task_item = @task_list.task_items.new(task_item_params)
if @task_item.save
redirect_to @task_list, notice: "Item Created"
end
end
task_lists_controller
def load_listable
klass = [Event, Meeting].detect { |c| params["#{c.name.underscore}_id"]}
@listable = klass.find(params["#{klass.name.underscore}_id"])
end
dies aufgrund der Anforderung nicht eine Klass, wie es aus der nicht polymorphen Seite der Beziehung gesendet wird. Der einzige Weg, um es zum Laufen zu bringen, ist do redirect_to: back, was nicht wünschenswert ist, da es nicht auf die task_item show Seite umleitet, da es in einem Teilmodal ist.
Also meine Frage ist im Grunde, wie kann ich es auf die task_item Show-Seite umleiten, wo die create-Methode aufgerufen wird oder überhaupt nicht umleiten?
Haben Sie (@ task_list, @ task_item) '' versucht redirect_to task_list_task_item_path? – engineersmnky
Ich tat, es hat funktioniert, aber es ist nicht die Seite, die ich darauf umleiten wollte. das bringt mich zum task_item Index, während ich möchte, dass es zu task_list show – Yoklan
Okay dann vielleicht schreiben Sie Ihren Beitrag um ein bisschen klarer zu sein, da es scheint, dass Sie zurück zum 'TaskItem' nicht die' TaskList' verweisen möchten. Allerdings sollten Sie in der Lage sein, etwas wie 'redirect_to tasklist_path (@ tasklist.id, klass: @ tasklist.task_list_type) 'zu tun, indem Sie die Klasse als zusätzliche Variable in params übergeben. – engineersmnky