• 締切済み

Ruby on Rails4 外部キーの渡し方

Rails4の初心者です。 例えば、生徒の情報の一覧ページから[評価する]というリンクを押して生徒の成績をつける時、どのようにすれば生徒を一意に識別する情報を評価ページ(newアクション?)に受け渡してevaluationテーブルに登録(insert)できるでしょうか。 <画面イメージ>(students.index):scaffoldによって生成されたindexアクション 生徒名 年 組 番号 [評価する] 生徒名 年 組 番号 [評価する] 生徒名 年 組 番号 [評価する]     ・・・ <各モデル>(id, 更新日時などのデフォルトのカラムは省略) studentsモデル name:string, nen:integer, kumi:integer, num:integer evaluationモデル shusseki:integer, test:integer, taido:integer, student_id:integer データを渡すということは、formで情報をpostするのかと考えたのですがどうも実装方法が思いつきません。 よろしくお願いいたします。

  • gao07
  • お礼率80% (53/66)
  • Ruby
  • 回答数1
  • ありがとう数11

みんなの回答

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

まずModelは1対多にしておきます。 has_manyとbelongs_toで設定 新しい評価を作成するのでしたら、 Evaluationにその生徒名のstudent_idを書き込んだレコード(他の項目は空)を新規に作成すれば可能です。 そして作成したレコードを表示させて、編集すれば成績の書き込みができます。 Studentビューのshowにでも、該当する生徒のEvaluation一覧を表示させ、編集と新規作成ボタンでも作ればわかりやすくなると思います。

gao07
質問者

補足

ご回答いただき有難うございます。 >Evaluationにその生徒名のstudent_idを書き込んだレコード(他の項目は空)を新規に作成すれば可能です。 この時、studentsのビューからevaluationsのコントローラへ処理が渡ると思うのですが、どのようにしてstudentのidを持って来れば良いのでしょうか? (studentsのどの生徒(列)が選択されたのかをどのようにevaluationsコントローラは知ることができますか?)

関連するQ&A

  • railsのscaffoldにて作成したプロジェクトの

    railsのscaffoldにて作成したプロジェクトの ViewsのEditのlink_toの第二引数の値がどこで設定されているかわかりません。 例えば、モデル名を"student"にてscaffoldを実行すると、 index.html.erbのEditはこのようになります。 <td><%= link_to 'Edit', edit_student_path(student) %></td> この"edit_student_path"というのが、何者なのかよくわかりません。 どこかで定義されているわけでもなく、動的に生成されているようですが、 仕組みが全くわかりません。 出力されたhtmlの該当部分はこのようになってます。 <a href="/students/1/edit">Edit</a> 現在、scaffoldにて生成したコントローラとビューを一階層掘り下げようとしている所で、出くわした問題です。 controllers/students_controller.rb views/students/index.html.erb ↓ controllers/hoge/students_controller.rb views/hoge/students/index.html.erb どなたかご教授いただけますでしょうか? ちなみにrailsのバージョンは2.3.5です。

    • ベストアンサー
    • Ruby
  • Ruby on Rails について

    Ruby on Railsでアプリケーションを作ります。 バージョンは:InstantRails-2.0-win 1、データベース表の作成: データベース名:myapp   テーブル名:peoples データベースを作成したら、MySQLを再起動します。 2、新規アプリケーションの作成: アプリケーション名:myapp Instant RailsウィンドウのIボタン⇒Rails Applications⇒Manage Rails Applicationsをクリックします。 Rails ApplicationsダイアログボックスのCreate New Rails App・・をクリックします。 コマンドプロンプト画面が表示されます。 rails myapp を入力します。 コマンドプロンプトのプロンプトが入力状態になって、コマンドプロンプトを閉じます。 Rails ApplicationsダイアログボックスのRefresh Listボタンをクリックしたら、myappアプリケーション名が追加されます。 3、アプリケーション・モデルの作成: InstantRails-2.0-winフォルダ ⇒ rails_apps ⇒ myapp ⇒ config ⇒ datebase.yml ファイルを開きます。 ↓に書き換えます。 development: adapter: mysql database: myapp timeout: 5000 username: root host: localhost   Instant RailsウィンドウのIボタン ⇒ Rails Applications ⇒ Open Ruby Console Windowをクリックします。 コマンドプロンプトが開きます。 cd myapp ruby script/generate model people を入力します。 4、コントローラの作成: コマンドプロンプトを開きます。 cd myapp ruby script/generate controller people を入力します。 コマンドプロンプトを閉じます。 InstantRails-2.0-winフォルダ ⇒ rails_apps ⇒ myapp ⇒ app ⇒ controllers ⇒ people_controller.rb ファイルを開きます。 class PeopleController<Application Controller scaffold :people ←←追加した行です。 end 5、新しいアプリケーションを起動 Rails ApplicationsダイアログボックスのRails Applications 欄の myappの所をチェックし、Start with Mongrelボタンをクリックします。 コマンドプロンプト画面が起動し、ポート番号が表示されます。 Webブラウザを起動し、アドレス欄に 一つは: 「http://localhost:people/list」を入力し、Enterキーを押します。 ↓Errorメッセージが表示されました。 NoMethodError in PeopleController#list undefined method `scaffold' for PeopleController:Class RAILS_ROOT: C:/taiyo/INSTAN~1.0-W/rails_apps/myapp   一つは: http://localhost:3000/people Enterキーを押します。 ↓Errorメッセージが表示されました。 NoMethodError in PeopleController#index undefined method `scaffold' for PeopleController:Class RAILS_ROOT: C:/taiyo/INSTAN~1.0-W/rails_apps/myapp どこの手順が違ってるのが解らなくて、 Errorの解決方法ですごく困ってます。 どうかご指導をお願いいたします。 もう一つはErrorメッセージの3行目は C:/taiyo/INSTAN~1.0-W/rails_apps/myappですけど、 InstantRails-2.0-winフォルダのはずですけど、 INSTAN~1.0-Wフォルダになった原因がよくわからないです。 すごく困ってます。 ご指導お願いいたします。

  • アクセスのフォームでデーター入力用の一覧をだすために,VBAを使いまし

    アクセスのフォームでデーター入力用の一覧をだすために,VBAを使いました。 最初はORDER以降がなくWHEREからの()もなくて,組ID="&Me.C組で動いていたのですが,番号で昇順にする必要ができて,以下のように書くと一覧が表示できなくなりました… 書き方に間違いがあると思うんですが,初心者のためわかりません… どなたかご教授お願いいたします。 Private Sub Form_Open(Cancel As Integer) Me.生徒氏名.RowSource = "SELECT T_生徒.生徒ID, T_生徒.組ID, T_生徒.組, T_生徒.番号, [姓]+[名] AS 生徒氏名, T_生徒.性 FROM T_生徒 WHERE (((組ID) = & Me.C組)) ORDER BY T_生徒.番号 acs" End Sub

  • 外部結合とカウントができない!

    お世話になります。 ここ数日、外部結合とカウントを組み合わせたSQL が思うようにかけず大変悩んでいます。 学校・クラス・生徒テーブルをJOINして、 合否判定数を求めたいのですが、 期待する結果になりません。どなたか助けて下さい>< ポスグレ+PHPです。 事情によりプログラム側でカウントできないので、 SQLで一気に取得しなければならないのがネックです。 以下3テーブルと期待する結果テーブルです。 ///////////////////////////////////////////////// 学校テーブル -------------- ID   学校名 -------------- 1   あああ 2   いいい -------------- クラステーブル ---------------------------- ID   学校ID   クラス名 ---------------------------- 1     1     6-1組 2     1     6-2組 3     2     5-1組 ---------------------------- 生徒テーブル ---------------------------------------------------- ID   学校ID   クラスID   生徒名   合格判定 ---------------------------------------------------- 1     1      1     AAAAAA    TRUE 2     1      1     BBBBBB    FALSE 3     1      2     CCCCCC    TRUE ---------------------------------------------------- 期待する結果 ---------------------------------------- ID   学校名   受験数   合格数 ---------------------------------------- 1    あああ    3     2 2    いいい    0     0 ---------------------------------------- ///////////////////////////////////////////////// どなたか助けてやってくださいm(_ _)m

  • scaffold後のviewの追加

    Mysqlでscaffoldを使ってnameとemail列をもったcontactsテーブルを作りました。 モデル名はContactとなっています。ビューにはすでにindex、edit、new、showなるファイルが存在していますが、searchというファイルを追加したいのですが、作成後 http://localhost:3000/contacts/searchにアクセスすると、 Couldn't find Contact with ID=search とエラーになります。scaffoldを使わずマニュアルでmodelとcontrollerを作った場合はこのエラーは出ず任意に作成したファイルにアクセス出来ます. scaffoldを使った場合どのファイルを修正すればよいのでしょうか?

  • Ruby と Ruby on Rails

    Ruby と Ruby on Railsは何が違うんでしょうか? 漠然とした質問ですいません。

    • ベストアンサー
    • Ruby
  • Ruby on rails 

    ERROR: While executing gem ... (Gem::RemoteSourceException) HTTP Response 302 fetching http://gems.rubyforge.org/yaml Lepordでxcodeを入れて、railsを始めようとしましたが、こちらのサイトを参照しながら、アップデートしようとしたところ、エラーが出ました。http://maskana-soft.com/rails/pro/body/164 302エラーの解決方法についていろいろとしらべてあるのですがサイトから最新バージョンのrailsを直接ダウンロードしても、rb拡張子が動きません。 どなたかアドバイスお願いします。

  • Ruby on Railsの学び方

    プログラミングを全く学習したことがない人がRuby on Railsという言語をマスターすることはできますか?また、どのような方法で学べばいいのでしょうか。

  • Ruby on Railsについて

    Ruby on RailsでWebアプリケーションを作成します。 下記の順でやりました。 1、データベース表を作成。 2、新規アプリケーションの作成。 3、作成したアプリケーションがどのデータベースを使うのかを教える。 4、モデルの作成。 5、コントローラの作成。 6、新しいアプリケーションを起動。 ここでコマンドプロンプト画面内に表示されるポート番号を確認し、 Webブラウザを起動し、 アドレス欄に[http://localhost:ポート番号/アドレスブック/アドレスブックのリスト] を記入しました。 エラーが表示されました。 NoMethodError in PeopleController#list undefined method `scaffold' for PeopleController:Class

  • ruby on Railsについて

    今度新しい仕事につきます。 そこで使用されているのはruby on Railsだそうです。 ruby on Railsやrubyのことは全くわかりません。 プログラムの経験はphpをかじった程度です。 これから猛勉強をして習得しようと考えています。 そこで質問が3つほどあります。 1.ruby on Rails を勉強するにあたり、rubyの勉強もしないといけないのか。 また、rubyの勉強をしなければいけない場合、rubyとRailsどちらを先に勉強するべきか。 2.なにかよい参考書はあるか。 3.よい勉強方法はあるか お忙しいとは思いますが、ご回答よろしくおねがいします。

    • ベストアンサー
    • Ruby