Как мне обрабатывать самостоятельные объединения с достойной экспозицией? - PullRequest
0 голосов
/ 01 мая 2011

У меня есть модель Forum, экземпляры которой могут иметь много вложенных форумов:

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

Мои маршруты идут так:

# 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'

Теперь в контроллере:

class Forums::NestedForumsController < ApplicationController
  expose(:forum)                 # Will find with :forum_id
  expose(:nested_forums)         { forum.nested_forums }
  expose(:nested_forum)          # Main issue here
end

В действии :create код, сгенерированный строкой expose(:nested_forum), попытается создать форум с params[:nested_forum]. Это неловкая ситуация, так как я использую самосоединение, а модель NestedForum отсутствует, и, кажется, нет способа сообщить об этом decent_exposure.

Что было бы хорошим способом справиться с этой ситуацией?

1 Ответ

0 голосов
/ 04 мая 2011

В моей форме у меня было:

form_for nested_forum, :url => { ... } do |f|
  # ...
end

Я добавил аргумент :as => :nested_forum в вызов метода form_for, и форма теперь сохраняет параметры в params[:nested_forum], что решает мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...