Rails 4 添加 file_field 用于将附件上传到现有表单和控制器

2024-03-07

我对 Rails 非常陌生。现在已经学习几周了。请原谅我的白痴。我无法获取我选择上传的文件。

我正在使用 Rails 4.0.0。

我正在开发我的第一个应用程序,我首先遵循博客应用程序的 Rails 指南。我接受了它并运行它,并正在创建一些不同的东西(错误跟踪系统),只是试图学习绳索。

所以,我得到了我的表格:

<%= form_for @post do |f| %>

我已经在我的 file_field 中添加了。就选择文件而言,视图中的显示部分看起来和工作都很好。

<%= f.label :attachment %>
<%= f.file_field :attachment %>

我已将其从 Rails 4 导轨中拉出,仅供参考。所以我的控制器看起来像这样:

class PostsController < ApplicationController

    def new
      @post = Post.new
    end

    def create
      @post = Post.new(params[:post].permit(:title, :text, :user, :screen))

      if @post.save
        redirect_to posts_path
      else
        render 'new'
      end
    end

    def show
      @post = Post.find(params[:id])
    end

    def index
      @posts = Post.all
    end

    def edit
      @post = Post.find(params[:id])
    end

    def update
      @post = Post.find(params[:id])

      if @post.update(params[:post].permit(:title, :text, :user, :screen))
        redirect_to posts_path
      else
        render 'edit'
      end
    end

    def destroy
      @post = Post.find(params[:id])
      @post.destroy
      redirect_to posts_path
    end

    def upload
      uploaded_io = params[:post][:attachment]
      File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'w') do |file|
        file.write(uploaded_io.read)
      end
    end

    private
    def post_params
      params.require(:post).permit(:title, :text, :user, :screen, :attachment)
    end

end

这里的新作品正在上传。其他一切都可以正常工作,从数据库中写入/读取并显示。当显示视图时,我输入文本,附加文件并点击提交。所有内容都会写入数据库并显示在索引上,但我尝试附加的文件不会写入 ~/bugs/public/uploads/

先谢谢您的帮助。


我认为问题可能是:attachment 属性不是“创建”或“更新”操作中允许的参数。

编辑:我进行简单文件上传的方式是使用回形针 https://github.com/thoughtbot/paperclip宝石 - 这个铁路广播公司 http://railscasts.com/episodes/134-paperclip解释得很好。它真的很容易使用。

还有这个答案 https://stackoverflow.com/questions/3933061/how-to-upload-a-file-in-rails这也许可以回答这个问题。

此外,使用强参数的标准方法是在私有方法中定义允许的参数并在控制器操作中调用该方法(因此您不必重复自己)。这可能是错误的原因。

Example:

def create
  @post = Post.new(post_params)
  ...
end

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 4 添加 file_field 用于将附件上传到现有表单和控制器 的相关文章

随机推荐