我想让我的用户在我的网站上上传视频(尚未部署,在本地测试)。我设置的方式是,如果“用户信息”被保存,它将把它们带到“root_path”,这是主页。如果未保存用户信息,则会再次呈现表单。在我添加视频上传功能之前,所有信息都已保存,一切运行良好,但在添加功能后,由于信息未被保存,它会一遍又一遍地渲染相同的表单。我该如何检查出错了什么?命令行给出了这个错误:
用户信息表格部分: `
<%= simple_form_for @userinfo do |f| %>
<%= f.input :name, label: 'Full name', error: 'Full name is mandatory' %>
<%= f.input :username, label: 'Username', error: 'Username is mandatory, please specify one' %>
<%= f.input :school, label: 'Name of college' %>
<%= f.input :gpa, label: 'Enter GPA' %>
<%= f.input :email, label: 'Enter email address' %>
<%= f.input :number, label: 'Phone number' %>
<%= f.file_field :video %>
<%= f.button :submit %>
<% end %>
`
我的用户控制器(这是用户信息控制器,不控制用户电子邮件和密码。我正在使用设计宝石进行用户登录,注销和注册):`
class UsersController < ApplicationController
def index
end
def show
end
def new
@userinfo = User.new
end
def create
@userinfo = User.new(user_params)
if @userinfo.save
redirect_to root_path
else
render 'new'
end
end
def edit
end
def update
end
def destroy
end
private
def user_params
params.require(:user).permit(:name, :username, :email, :number, :school, :gpa, :major, :video)
end
end
`
这是用户模型(usermain是与用户密码和电子邮件相关的模型。用户模型中的用户信息属于usermain):`
class User < ActiveRecord::Base
belongs_to :usermain
has_attached_file :video, styles: {:video_show => {:geometry => "640x480",:format => 'mp4'},:video_index => { :geometry => "160x120", :format => 'jpeg', :time => 10}}, :processors => [:transcoder]
validates_attachment_content_type :video, content_type: /\Avideo\/.*\Z/
end
`
这是创建用户信息表的迁移文件:`
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :name
t.string :username
t.string :email
t.string :number
t.string :school
t.string :gpa
t.string :major
t.timestamps null: false
end
end
end
This is adding the "video" field to the above created user information table:
class AddAttachmentVideoToUsers < ActiveRecord::Migration
def self.up
change_table :users do |t|
t.attachment :video
end
end
def self.down
remove_attachment :users, :video
end
end
`
我还安装了paperclip和ffmpeg。当我说安装时,它确实就是这样。我不确定是否必须以任何方式操纵paperclip或ffmpeg以使其与视频一起使用,我刚刚安装并且没有对它们做任何其他事情。过去两天我一直在拔头发。任何帮助表示赞赏。