【问题标题】:Rails 4 paperclip avatar_file_name: nilRails 4 回形针头像文件名:无
【发布时间】:2014-07-20 12:14:58
【问题描述】:

我的用户模型添加了最新版本的回形针 gem,我从回形针 wiki 学习教程,

class User < ActiveRecord::Base
 has_attached_file :avatar, :styles => { :medium => "300x300>", :thumb => "100x100>" },    :default_url => "/images/:style/missing.png"
 validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/

 devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable
end

用户控制器

class UsersController < ApplicationController
 def index
  @users = User.all
 end

 def show
  @user = User.find(params[:id])
 end

 def create
  @user = User.create(secure_params)
 end

 def update
  @user = User.find(params[:id])
   if @user.update_attributes(secure_params)
    redirect_to users_path, :notice => "User updated."
  else
   redirect_to users_path, :alert => "Unable to update user."
  end
 end

 def destroy
  user = User.find(params[:id])
  user.destroy
  redirect_to users_path, :notice => "User deleted."
 end

 private

 def secure_params
  params.require(:user).permit(:avater)
 end

end

迁移

class AddAvatarColumnsToUsers < ActiveRecord::Migration
 def self.up
  add_attachment :users, :avatar
 end

 def self.down
  remove_attachment :users, :avatar
 end
end

我在 new.html.erb

中使用 simple_form

注册

<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name),:html => {:multipart => true}) do |f| %>
 <%= f.error_notification %>

 <div class="form-inputs">
  <%= f.file_field :avatar %>
  <%= f.input :email, required: true %>
  <%= f.input :password, required: true %>
  <%= f.input :password_confirmation, required: true %>
 </div>

 <div class="form-actions">
  <%= f.button :submit, "Sign up" %>
 </div>
<% end %>

<%= render "devise/shared/links" %>

gem 文件

source 'https://rubygems.org'
ruby '2.1.1'
gem 'rails', '4.1.1'
gem 'sqlite3'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0',          group: :doc
gem 'spring',        group: :development



gem 'devise'
gem 'simple_form'
gem "paperclip", "~> 4.1"

group :development do
 gem 'better_errors'
 gem 'binding_of_caller', :platforms=>[:mri_21]
 gem 'quiet_assets'
 gem 'rails_layout'
end

当输入 rails c 和 user=User.all

avatar_file_name: nil, avatar_content_type: nil, avatar_file_size: nil, avatar_updated_at: nil

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 paperclip


    【解决方案1】:

    您是否忘记更改它以反映您的用户对象?

    <%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name),:html => {:multipart => true}) do |f| %>
    

    【讨论】:

    • 我更新到 &lt;%= simple_form_for @user,:html =&gt; {:multipart =&gt; true} do |f| %&gt;,它有 avatar_file_name: nil,不起作用
    • 你忘了设置你的url,创建用户后它会去哪里?或者您可以在控制器中的创建操作上添加一个 redirect_to
    • ` def create @user = User.create(secure_params) @user.save render "show" end ` 添加到用户控制器。这一切都不起作用
    • 做redirect_to user_url(@user) 或任何你的路线是为了用户展示
    • 还可以从浏览器或终端剪切并粘贴您收到的消息
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多