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?

Était-ce utile?

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
scroll top