0

私は学生のテーブルに持っています:

             id | fname | gname | course | year |
           ----------------------------------------
               1| user 1| user 1|  IT    |  5   |
           ----------------------------------------
               2| user 2| user 2|  CompE |  3   |
           ----------------------------------------
               3| user 3| user 3| Nursing|  2   |

私のコントローラーでは、 * HASHを使用して生徒の情報を表示しています*

def index
  @students = Student.all
  @studentlist = HASH.new
   @students.each do |s|
     @studentlist[s.id] = s
   end
end

私のインデックスビューにはこれがあります

<%=form_tag "/students/update_year" do%>
<table>
    <tr>
        <th>id</th>
        <TH>Family Name</TH>
        <TH>Year</TH>
    </tr>
    <%@studentlist.each_key do |key|%>
        <tr>
            <td><%=@studentlist[key].id%></td>
            <td><%=@studentlist[key].fname%></td>
            <td><%=collection_select(:student,:year,Student.select('distinct year') , :year , :year ,:selected=>@studentlist[key].year %></td>
        </tr>       
    <%end%>
</table>
<%=submit_tag("Update")%>
  • 学生の年を変更して更新をクリックしたいのですが、更新すると列のすべての値が変更され、同じ値になります。

この私のコントローラupdate_yearアクション:

def update_year
   @students = Student.all
   @studentlist = HASH.new
   @students.each do |s|
      @studentlist[s.id] = s
       @studentlist.each_key do |key|
       @student = Student.find(@studentlist[key].id)
       @student.update_attributes(params[:student])
     end
  end
 end

更新されないか、値が更新されずに I have set on mycollection_select

私を助けてください !ありがとうございました。

4

2 に答える 2

0
  1. テーブルの表示にハッシュを使用するのはなぜですか?
  2. update_year アクションでは、db からすべての学生を取得するのは賢明ではありません。時間と db がかかり、必要ないからです..
于 2013-07-18T09:20:12.090 に答える