kyl*_*yle 5 ruby ruby-on-rails filefield ruby-on-rails-4
我是铁杆的新手.现在已经学习了几个星期.请原谅我的愚蠢.我无法获取我选择上传的文件.
我正在使用Rails 4.0.0.
我正在处理我的第一个应用程序,我开始遵循博客应用程序的rails指南.我接受了它,并与它一起运行,并创建了一些不同的(错误跟踪系统),只是试图学习绳索.
所以,我有我的表格:
<%= form_for @post do |f| %>
Run Code Online (Sandbox Code Playgroud)
我已经在我的file_field中添加了.视图中的显示部分看起来并且在选择文件时效果很好.
<%= f.label :attachment %>
<%= f.file_field :attachment %>
Run Code Online (Sandbox Code Playgroud)
我已经从导轨4指南FYI中取出了这个.所以我的控制器看起来像这样:
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
Run Code Online (Sandbox Code Playgroud)
这里的新作品是上传.通过从数据库中读取和读取并显示,其他所有工作都正常.当显示视图时,我创建文本条目,附加文件并点击提交.一切都写入数据库并显示索引,但我试图附加的文件没有写入〜/ bugs/public/uploads /
在此先感谢您的帮助.
我认为问题可能是:attachment 属性不是“创建”或“更新”操作中允许的参数。
编辑:我进行简单文件上传的方式是使用Paperclip gem - 这个railscast很好地解释了它。它真的很容易使用。
还有一个答案可以回答这个问题。
此外,使用强参数的标准方法是在私有方法中定义允许的参数并在控制器操作中调用该方法(因此您不必重复自己)。这可能是错误的原因。
例子:
def create
@post = Post.new(post_params)
...
end
Run Code Online (Sandbox Code Playgroud)
希望有帮助。
| 归档时间: |
|
| 查看次数: |
15476 次 |
| 最近记录: |