Comment puis-je gérer l'auto se joignent au decent_exposure?
-
27-10-2019 - |
Question
J'ai un modèle Forum
, dont les instances peuvent avoir de nombreux forums imbriqués:
class Forum < ActiveRecord::Base
has_many :nested_forums,
:class_name => 'Forum',
:foreign_key => 'parent_forum_id',
:dependent => :nullify
belongs_to :parent_forum,
:class_name => 'Forum'
end
Mes itinéraires vont comme ceci:
# Standard resource routes
GET /forums/:id => 'forums#show'
# ...
GET /forums/:forum_id/nested_forums/new => 'Forums/nested_forums#new'
POST /forums/:forum_id/nested_forums => 'forums/nested_forums#create'
Maintenant, dans le contrôleur:
class Forums::NestedForumsController < ApplicationController
expose(:forum) # Will find with :forum_id
expose(:nested_forums) { forum.nested_forums }
expose(:nested_forum) # Main issue here
end
Dans l'action :create
, le code généré par le expose(:nested_forum)
de ligne va essayer de créer un forum avec params[:nested_forum]
. Ceci est une situation délicate car j'utilise un autojointure et il n'y a pas de modèle de NestedForum
, et il ne semble pas être un moyen de dire que pour decent_exposure
.
Quelle serait une bonne façon de gérer cette situation?
La solution
Dans ma forme, j'avais:
form_for nested_forum, :url => { ... } do |f|
# ...
end
J'ajouté l'argument :as => :nested_forum
à la méthode form_for
appel et le formulaire stocke maintenant les paramètres params[:nested_forum]
, qui résout mon problème.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow