2016-11-24 13 views
0

私はラジオボタンでフォームを持っている:RoR:ラジオボタンからテーブルを取り込む方法は?私のアプリケーションで

<%= form_for @homework.homework_students.homework_ratings do |f| %> 
    <label> 
    <%= f.radio_button :fb_value, '1', :fb_type, 'Difficulty' %> 
    </label> 
    1 
    <label> 
    <%= f.radio_button :fb_value, '2', :fb_type, 'Difficulty' %> 
    </label> 
    2 
    <label> 
    <%= f.radio_button :fb_value, '3', :fb_type, 'Difficulty' %> 
    3 
    </label> 
<%= f.button :submit %> 
<% end %> 

目的は構文が正しいかどうかわからない(表中の各宿題のために(「値」と「タイプ」と呼ばれる)は、2つのカラムを投入することです

homework_ratings.rb

belongs_to :homework_student, :class_name => 'HomeworkStudent', :foreign_key => :homework_student_id 

homework_students.rb

:上記)と呼ばれるテーブルに関連付けられている "homework_ratings" "homework_students" と呼ばれます
has_many :homework_ratings, :class_name => 'HomeworkRating' 
    belongs_to :homework, :class_name => 'Homework', :foreign_key =>  :homework_id, dependent: :destroy 

homework_studentsは多くの宿題があります

homework.rbを

has_many :homework_students, :class_name => 'HomeworkStudent', dependent: :destroy 

homework_ratings表:nは

id     :integer   not null, primary key 
# homework_student_id :integer 
# type    :integer 
# value    :string(255) 
# created_at   :datetime   not null 
# updated_at   :datetime   not null 

homeworks_controller.rb

def show 
     @homework_ratings = HomeworkRating.all 
... 
end 

utshell私は、宿題からの直接の関連性がなく、homework_studentsを介して上記のように間接的に関連付けられている宿題からテーブルを作成しようとしています。

ページの読み込み中に「未定義のメソッドhomework_ratings」というエラーが表示されます。

これに最も近づく方法についての考えはありますか?

ありがとう、より多くの情報を提供できます...

+1

これは答えではありませんが、フィールド名に 'value'や' type'以外のものを使用します。なぜなら、これらはinbuiltのレールメソッドと必然的に衝突するからです。 – court3nay

答えて

1

簡体字中国語あなたは宿題の評価を記録しようとしていますよね?専用のレーティング・コントローラを作成し、レーティングを作成するだけです。あなたが作成しているものから常にリソースを作り出そうとします。あなたのアプリにはたくさんのリソースやコントローラが必要です。コントローラで

<%= form_for @homework_rating do |f| %> 
    <%= f.hidden_field :homework_student_id %> 

def new 
    @homework_student = HomeworkStudent.find params[:homework_student_id] 
    @homework_rating = @homework.ratings.new 
end 

あなたはおそらくもhas_many :through

編集として見てみたい:あなたは1つのラジオボタンと2つの値を設定することはできません。しかし、あなたは場合のように、または場合、あなたはその後、ヴァルにルビーのすべてのソートを行うことができます評価モデルに

def set_values=(val) 
    self.type = "foo" 
    self.value = "bar" 
end 

のライターメソッドを作成することができます。ラジオボタンとモデルアクションの間のコミュニケーションの方法を考え出す必要があります。

+0

ありがとう、私はあなたの提案をしましたが、このエラーが表示されます: "フォームの最初の引数にはnilを含めることができないか、空ではありません"。私は宿題でショー・ビューを読み込んでいます。 – Co2

+0

私はあなたの指導に基づいて何かをしようとしています。私は構文がラジオボタンのフォームで間違っていると思いますが(2の場合は4)、これは最初のラジオボタンにあります... – Co2

+0

はい、フォームをレンダリングしているアクションでインスタンス変数@homework_ratingを設定する必要があるため、新しい場合は表示されません。 – court3nay

関連する問題