Можно ли управлять несколькими несвязанными моделями из формы Rails? - PullRequest
0 голосов
/ 06 сентября 2011

Как я могу управлять несколькими несвязанными моделями из формы Rails?

Должен ли я иметь только один контроллер для всех моделей или для каждой модели один контроллер?

это мой контроллер:

class WordsController < ApplicationController
  def new
         @word=Word.new
         @verb=Verb.new
         @adjektiv=Adjektiv.new
         @adverb=Adverb.new
  end
  def create
    @word=Word.create(params[:word])
    @verb=Verb.create(params[:verb])
    @adjektiv=Adjektiv.create(params[:adjektiv])
    @adverb=Adverb.create(params[:adverb])

    if @word.save || @verb.save || @adjektiv ||  @adverb
      redirect_to :action => 'index'
    else
      render :action => 'new'
    end
  end
  def index
        @word=Word.find(:all)
        @verb=Verb.find(:all)
        @adjektiv=Adjektiv.find(:all)
        @adverb =Adverb.find(:all)
  end
  def edit
        @word=Word.find(params[:id])
        @verb=Verb.find(params[:id])
        @adjektiv=Adjektiv.find(params[:id])
        @adverb =Adverb.find(params[:id])
  end
  def update
    @word =Word.find(params[:id])
    if @word.update_attributes(params[:word])  ||   @verb.update_attributes(params[:verb])  || @adjektiv.update_attributes(params[:adjektiv]) || @adverb.update_attributes(params[:adverb])
      redirect_to :action => 'index'
    else
      redirect_to :action => 'edit'
    end
  end
end

1 Ответ

0 голосов
/ 06 сентября 2011

Вы можете управлять несколькими моделями из одной формы. (Но я думаю, что использовать пропущенное в архитектуре приложения, если вы хотите сделать это, как вы объяснили). Вам не нужно несколько контроллеров - используйте один. Например: просто создайте новые экземпляры моделей в действии new, подтвердите и сохраните их в действии create. То же самое для edit / update действий. Я думаю, вам также следует использовать form_tag вместо form_for, потому что не будет родительской модели для обработки.

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