2011-12-16 8 views
0

1つのコントローラに2つ(あるいはそれ以上)の異なる作成(および更新)メソッドが必要です。私はすでにフォームを表示しているビューを持っているので、基本的には、どのメソッドをコントローラに呼び出すかをサブミットする必要があります。それは可能ですか?もしそうなら、どうですか?または、メソッドを作成するメソッドを1つしか持たず、メソッドと呼ばれるビューに応じてそのメソッドを異なるものにすることはできますか?これは本当にひどいアイデアのように聞こえる、それが可能だという事実を無視Rails、複数のメソッドを1つのコントローラに作成できますか?

おかげ

+0

あなたはそれに渡されたcreate with paramsの動作を変更できますか? –

+0

はい、私はそれもいくつかthougtを与えている。私の問題は、更新プログラムを挿入物として誤用する必要があることです。したがって、あるフォームは新しいフォームから、もう1つは編集フォームから呼び出されます。私の "更新"はまだテーブルの古いレコードを保持する必要があります。また、従来のデータベースでは問題を簡単にすることはできません... – Max

+0

確かに古いレコードは別のテーブルに保管する必要がありますか?とにかく、更新アクションでレコードを作成することができます。それをやめることは何もありません。 paramsメソッドは、何かが見つからない限り動作します。あなたが "bt view"メソッドを主張するなら、おそらくrefererリンクを使うことができますか? –

答えて

0

。あなたのコントローラ内の新しいアクションと一致するいくつかのルートを追加する必要があります。メソッド名は同じクラス内で一意でなければならないため、それらを「作成」および「更新」と呼び出すことはできません。

あなたのアプローチを再考することを本当に願います。 RESTは、Rails Getting Started guideで説明されているように、Railsアプリケーションを構築するための標準ではありません。あなたがそれに精通していないなら、私はあなたがどこにいてもそれを読んで読むことをお勧めします。アプリケーションの構築と保守がはるかに簡単になり、構造的な質問をする時間を無駄にすることはありません。あなたがそれに精通していてそれを無視しようとしているなら、私はあなたに最高の運が欲しいと願っています。

このコマンドを使用することができます
0

レールグラムscaffold_controller 'コントローラ名'

や痙性の方法は、あなたがこれを使用することができた場合

レールは、コントローラのコントローラ名 'を追加を生成新規

0

LあなたはオブジェクトBookを持っていると言っています。そのメソッドが@book.idにアクセスできる限り、books_controller.rb内のどのメソッドでもBookの値を変更することができます。

def crazy_create_method 
    book.create (book_params) 
    book.save 
end 

言われていること、/新しいデフォルトに固執するメソッドを作成しようと、あなたが後でそれに奇妙な取得する必要がある場合、コードは何が必要メソッドに属して呼び出すことは常に簡単です。 Railsは、デフォルトのRESTアクションに多くの機能をそのままにしています。

book.title = my_title 
book.save 
関連する問題