nil:NilClass semantic_form_for rails 的未定义方法“路径”

undefined method `path' for nil:NilClass semantic_form_for rails

我正在尝试使用 semantic_form_for 上传一个要解析属性的文件,但我似乎无法让它工作,尽管从我读过的内容来看它应该是。我已经这样做了一段时间了,似乎无法使任何工作正常进行。

这是我的view.haml:

= semantic_form_for(@user, :url => import_users_path, :html => {:multipart => true} ) do |f|
        = f.inputs :id => 'inputs' do
          = f.input :filename, :as => :file
        %br
        %br
        = f.actions do
          = f.action :submit, :label => 'BULK UPLOAD'

和用户控制器导入函数:

 def import
    myfile = params[:filename]

    CSV.foreach(myfile.path, headers: true) do |row|
      @user = User.new(params[:user])
      @user.name = row['Name']
      @user.email = row['Email']
      @user.save
    end
    redirect_to users_url 
  end

无论出于何种原因,该文件似乎都没有传递到导入函数中。它适用于 form_for,但不适用于 semantic_form_for,这是我需要尝试使用的。感谢您的帮助!

看起来有些 url 问题

<% semantic_form_for :post, Post.new, :url => posts_path do |f| %>
  ...
<% end %>

看看http://www.rubydoc.info/gems/formtastic/0.9.10/Formtastic/SemanticFormHelper

试试这个表单是否会在用户新操作中打开?然后...

def new 
 @user = User.new 
end


def import
  CSV.foreach(myfile.path, headers: true) do |row|
    @user = User.new(params[:user])
    @user.name = row['Name']
    @user.email = row['Email']
    @user.save
   end
   redirect_to users_url 
end


<%= semantic_form_for(@user, :url => import_users_path(@user)) do |f| %>

<% end %>

只需在控制器的导入方法中将 myfile = params[:filename] 更改为 myfile = params[:user][:file]

def import
  myfile = params[:user][:file]

  CSV.foreach(myfile.path, headers: true) do |row|
    @user = User.new
    @user.name = row['Name']
    @user.email = row['Email']
    @user.save
  end
  redirect_to users_url
end