0

csv を rails アプリケーションにインポートする方法を学んでいます。ただし、アプリケーションを実行すると、すべての値が「nil」であることが判明しました。以下のコードの何が問題なのかを知ることができますか?

コントローラ

def import_csv
    @list = List.find(params[:list_id])
    @lists = List.all

respond_to do |format|
@csv=params[:file]
@n=0
CSV.parse(@csv).each do | row |
  @user_new = User.new
  @user_new.first_name = row[0]
  @user_new.last_name = row[1]
  @user_new.email = row[2]
  @user_new.address = row[3]
  @user_new.city = row[4]
  @user_new.state = row[5]
  @user_new.zipcode = row[6]
  @user_new.country = row[7]
  @user_new.notes = row[8]
  @user_new.birthday = row[9]
  @user_new.home_number = row[10]
  @user_new.mobile_number = row[11]
  @user_new.list_id = @list.id
  @user_new.save

  @n=@n+1
  GC.start if @n%50==0
  flash[:notice] = "CSV Imported Successfully, with  #{@n} records"                                
end

  format.html { redirect_to lists_url }
  format.json { head :no_content }
end

  end

意見

<%= form_for(:list, :url => list_import_csv_path(@list), :method => :get, :html => {:multipart => true}) do |f| %>
 <table>
    <tr>
        <td><label for="dump_file">Select a CSV File :</label></td>
        <td ><%= file_field_tag :file %></td>
    </tr>
    <tr>
        <td colspan='2'><%= submit_tag 'Submit' %></td>
    </tr>
</table>
<% end %>
4

1 に答える 1

0

URLでフォームを送信する際に問題が発生したと思います。このようなことを試してください。(コントローラーに import というカスタム アクションがあります)

<%= form_tag @list, :action => 'import', :multipart => true do |f| %>

<label class="control-label" for="fileInput" style="width: 160px">Select file: </label>
<%= file_field_tag 'file', :accept => 'text/html', :size => 60%>

<div class="form-actions">
<%= submit_tag 'SUbmit', :class=>"btn" %>
</div>
<% end %>

このチュートリアルに従ってみてください。インポートとエクスポートの優れた例があります。見てみな

于 2012-07-13T23:40:00.050 に答える