私は次のモデルを持っています:
Subject has_many Points
Point belongs_to Subject
ポイントはフォームを使用して作成され、コントローラーは次のとおりです。
def create
@subject = Subject.find(params[:subject_id])
@point = @subject.points.build(params[:point])
if @point.save
flash[:success] = "You have created new data"
redirect_to subject_path(@point.subject_id)
else
render 'new'
end
end
現時点では、ユーザーはフォームを使用して各サブジェクトのポイントを作成できます。ただし、ユーザーがcsvファイルからマスポイントをアップロードできるようにもしたいと思います。このために私はcsvライブラリ(ruby 1.9.3)を使用しています
csvファイルをアップロードした後、次のようにcsvファイルをテーブルに配置します
thegrid = CSV.table(path, :headers => true, :header_converters => :symbol)
ここで、pathはcsvへのパスです。csvファイルのヘッダーは、データベースの列名と一致します(subject_id列番号を含む)
テーブルの行をループして、次のように各行をデータベースに追加します
<% point = Hash.new %>
<% thegrid.each do |row| %>
<%
point = {
"name" => row[0],
"total_points" => row[1],
"subject_id" => row[2]
}
%>
<% @point = @subject.points.build(params[point]) %>
<% end %>
しかし、上記はデータベースに行を追加するようには見えません。このループを実行する正しい方法は何ですか、問題を引き起こしているのはパラメータである可能性があると思います