2009-05-15 6 views
3

私は2つのテーブルを持っています:フォーム、質問。アイデアは非常に簡単です、すべてのフォームは多くの質問があります。テーブルは作りましたRuby on Rails、ActiveScaffoldおよびデータベース内の親戚

フォーム= | id |タイトル|

質問= id |タイトル|入力| form_id |

どのように推測できるかは、form_idがフォームIDのキーです。

class FormsController < ApplicationController 
active_scaffold :form 
end 

class QuestionsController < ApplicationController 
active_scaffold :question 
end 

class Question < ActiveRecord::Base 
has_one :form 
end 

class Form < ActiveRecord::Base 
has_many :question 
end 

と私は、選択可能なフォームを使用してアクテイブエスケープ(質問)を作成したいと思います。今はフォームのIDのみを入力できますが、ドロップダウンメニューでは選択できません。レールやアクティベーションをどのように設定すればよいですか?

ありがとうございました。私の英語には申し訳ありません:)

答えて

4

コントローラに設定を追加する必要があります。

class QuestionsController < ApplicationController 
    active_scaffold :question do |config| 
    config.columns = [:id, :title, :input, :form_id] 
    config.columns[:form_id].ui_type = :select 
    end 
end 
0

私はactive_scaffoldについてはわかりませんが、フォームと質問モデルの関係ステートメントにはいくつかの間違いがあります。私はこれがあなたの望むものだと思う:

class Form < ActiveRecord::Base 
has_many :questions 
end 

class Question < ActiveRecord::Base 
belongs_to :form 
end 

希望があると思います。

4

activeshaffoldを頭痛のない状態で使用したい場合は、この単純なルールに従わなければなりません。ドロップダウンはbelongs_toで宣言された関連付けを参照する場合にのみ機能します。 以前の回答を組み合わせて作成することができます。

モデルでは、レールの方法に従います。複数形と変容を尊重する。

class Form < ActiveRecord::Base 
has_many :questions 
end 

class Question < ActiveRecord::Base 
belongs_to :form 
end 

それは、この場合には、「belongs_toの」との関連で単数形の名前を使用することは非常に重要です:あなたのコントローラサラ・メイの答えを使用して

フォーム

が、変更をallesklar提案として は、それらを書きますそれ少しは、あなたがbelongs_toの中で宣言している団体名を使用して、あなたはuが複数のフィールドでモデルを使用する場合は、「DEF TO_LABEL」を使用することを忘れないこの

class QuestionsController < ApplicationController 
    active_scaffold :question do |config| 
    config.columns = [:id, :title, :input, :form] 
    config.columns[:form].ui_type = :select 
    end 
end 

のようなものがあるでしょう、なぜならActiveScaffoldは推測できませんあなたが見せたいフィールドです。

グリーセス