2016-10-03 3 views
2

私はサブジェクトとグレード属性を持つモデルの学生がいます。生徒は多くの科目や成績を取ることができます。私がしたいのは、特定の生徒のためにリストされている第2または第3の科目を発行できることです。モデルからn番目の属性を公開します

たとえば、ユーザーが学生を検索した後、その学生をクリックすると、その特定の学生(学生ID:1)に関する情報をリストした別のページが表示されます。サブジェクトと成績属性からn番目のアイテムを表示するためにビューに追加できるコードはありますか?

私はここでオンラインで見て、同様の質問を見つけましたが、モデルに関連する解決策であり、属性ではありません。例えば、一つの解決策は、コントローラに制限法を用いて、推奨されており、別のは、次のコードを使用してお勧め:

<% firm.state_of_business.split(',').each_with_index do |state, index| %> 
     <td> <b>State <%= index + 1 %></b> <%= state %> 

これは、あなたが選択した特定のモデルを持っていないとき、うまく動作しているようです。特定のモデル(学生ID:1)を選択すると、これは機能していないようです。少なくとも私のためではない。今すぐ下の私のコードは、最初の項目を示しています。私はそれをどのようにサブジェクト1 &グレード1、サブジェクト2 &グレード2、サブジェクト3 &グレード3などにリストアップすることができます。以下のサンプルコードを参照してください。私はここで他の解決策を試しましたが、動作させることができませんでした。私の問題は以前に提示されたものとは異なるかもしれないと思っていました。ご協力いただきありがとうございます。

コードの表示

<h2>Students</h2> 

    <p> Student: 
    <%= @student.name %> 
</p> 

<table> 
    <tr> 
    <th> Subject </th> 
    <th> Grade </th> 

</tr> 
    <tr> 
     <td><%= @student.subject %> </td> 
     <td><%= @student.grade %> </td> 
    <tr> 
    </table> 

コントローラーの表示方法

def show 
    @user = current_user 
    @student = Student.find(params[:id]) 
    end 

所望の出力

Student: Matt Jones 

Subject Grade 
Math  95 
History 90 
English 91 

答えて

1

試行:

<%= @student.grade.split(',')[0] %> 

[0]配列の最初の項目を公開します。 [1]は2番目のアイテムなどを公開します。それはうまくいくはずです。

+0

ありがとうございますrichiepop!そのソリューションは完全に機能します。実際には私がここで見つけたものと非常によく似ていますが、少し異なります。ヘルプをよろしくお願いいたします。 – DCRubyHound

0

I guesあなたはSubjectと呼ばれる別のモデルを作成し、has_many :subjectsclass Studentに追加することができます。

class Subjectには、この行を追加できます。belongs_to :student

そして、あなたはこのような何か、この行うことができます:ちょうどそれを明確にするために

<% @student.subjects.each do |subject| %> 
    <tr> 
    <td><%= subject.name %> </td> 
    <td><%= subject.grade %> </td> 
    <tr> 
<% end %> 

を、Subjectモデルは、上記の例では、属性namegradeが含まれています。このコードを追加

+0

アドリアンさん、ありがとうございます。私はこの解決策をいくつか考えましたが、多くの属性があるという事実を考慮して、別のモデルを作成することなく、n番目のアイテムを公開する方法を見つけようと考えました。別の方法があると願っています。ありがとう、結構です。 – DCRubyHound

関連する問題