我正在尝试构建一个非常基本的Rails应用程序,用于发布带有注释的图像。 注释是必填字段,并且仅在注释部分具有值的情况下才能继续上传图像,否则显示错误消息。 我遇到的问题是,即使在注释部分中填充了它,仍然显示错误,指出不能为空。 我试过用html字段名称和数据库值添加attr_accessor,但这没什么区别。

帖子模型

class Post < ActiveRecord::Base
  has_attached_file :picture, styles: { medium: "300x300>", thumb: "100x100>" }
  attr_accessor :picture_file_name
  attr_accessor :post_description

  validates :description, presence: true
end

帖子控制器

class PostsController < ApplicationController

  def index
    @posts = Post.all
  end

  def new
    @post = Post.new
  end

  def create
    @post = Post.new params[:post].permit(:description, :picture)

    if @post.save
      redirect_to '/posts'
    else
      render 'new'
    end
  end
end

new.html.erb

 <% if @post.errors.any? %>
  <div id="error_explanation">
    <h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being     saved:</h2>

    <ul>
    <% @post.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    <% end %>
    </ul>
  </div>
<% end %>

<%= form_for @post, :html => { :multipart => true } do |f| %>
  <%= f.label :description %>
  <%= f.text_area :description %>

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

  <%= f.submit %>
<% end %> 

服务器读数

    => Booting WEBrick
=> Rails 4.0.4 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2014-04-20 17:59:07] INFO  WEBrick 1.3.1
[2014-04-20 17:59:07] INFO  ruby 2.1.0 (2013-12-25) [x86_64-darwin12.0]
[2014-04-20 17:59:07] INFO  WEBrick::HTTPServer#start: pid=98772 port=3000


Started POST "/posts" for 127.0.0.1 at 2014-04-20 17:59:21 +0100
  ActiveRecord::SchemaMigration Load (0.2ms)  SELECT "schema_migrations".* FROM "schema_migrations"
Processing by PostsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"nVrCEAdT+epbltQWR74jtv1weGaq6H7YbWQKFfJNDTw=", "post"=>{"description"=>"test comment", "picture"=>#<ActionDispatch::Http::UploadedFile:0x0000010242f740 @tempfile=#<Tempfile:/var/folders/lm/vrw53rx91831vrh4228m0mfw0000gn/T/RackMultipart20140420-98772-1c9msrz>, @original_filename="dory_2.jpg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"post[picture]\"; filename=\"dory_2.jpg\"\r\nContent-Type: image/jpeg\r\n">}, "commit"=>"Create Post"}
WARNING: Can't mass-assign protected attributes for Post: description, picture
    app/controllers/posts_controller.rb:12:in `create'
   (0.1ms)  begin transaction
   (0.1ms)  rollback transaction
  Rendered posts/new.html.erb within layouts/application (13.1ms)
Completed 200 OK in 105ms (Views: 65.6ms | ActiveRecord: 0.4ms)

===============>>#1 票数:0

您的参数和形式看起来还可以

但我会将您的强参数更改为更常规的:

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

private

def post_params
    params.require(:post).permit(:description, :picture)
end

===============>>#2 票数:0 已采纳

我发现了问题。 问题是我最初安装了最新版本的Paperclip,然后降级了。 我在寻找解决方案时添加了以下宝石

gem 'protected_attributes'

这导致所有必填字段都无法注册,例如正在用户注册字段中被填充等。一旦删除了该gem,它就可以正常工作。

  ask by 3therk1ll translate from so

未解决问题?本站智能推荐:

1回复

Ruby on Rails-嵌套表单,未保存属性(使用回形针上传图像)

我已经按照harlt的教程从ruby开始。 现在,我想在我的微博中添加图片。 当我使用简单表单仅上传图片时,它就可以工作。 当我想以微博的形式上传图片时,会创建图片,但所有属性均为空。 服务器日志,用于简单上传图片 服务器日志以微博形式上传图片 我们可以看到, Bin
1回复

使用回形针gem的错误(before_avatar_post_process)。 我正在使用Rails 4.2和ruby 2

我是红宝石的初学者。 使用回形针gem时出现错误。 用户模型为 并通过命令行生成迁移 当我删除线 在用户模型中,它不显示错误。 如果我添加该行,则显示错误 请帮助我解决这个问题。 提前致谢。
1回复

Rails回形针上传按钮不起作用

我尝试将Paperclip集成到我的Web应用程序中。 问题是,上传按钮不起作用。 我可以选择一个文件,输入标题等,但是当我点击上传时,什么也没有发生。 当我删除_form.html.erb文件时, 上传按钮可以再次使用,但是没有回形针附件。 任何想法如何解决这一问题?
1回复

使用Ruby将多个图像上传到Imgur API的速度很慢

因此,我有一个可以一次提交多个图像的表单。 我还用Ruby为Imgur API编写了一个包装器。 我的问题是,由于这是完全同步发生的,因此即使是10张图像,它也要花很长时间甚至超时。 我想知道是否有更好的方法可以处理更多图像。 我所能想到的就是异步提交带有一个图像的表单,但是我不确定
1回复

Rails 4使用载波上传多个图像

如何使用CarrierWave上传多张图片? 我遵循“ drjorgepolanco”的回答 Rails 4使用carrierwave上传多个图像或文件 但我不断出错 Assignment.rb assignments_controller.rb 作业/
1回复

在Rails中上传时图像会自动旋转

这个问题已经在这里有了答案: 使用载波和rmagick将exif图像旋转问题上传到s3 4个答案 我正在使用carrierwave作为宝石在我的Rails项目中上传图像,它在除Android之外的所有设备上都能正常工作,每当我从Android设备上传图像时它就会旋转
1回复

使用Rails和CarrierWave保存使用RMagick创建的图像

在我的Rails应用程序中,我有一个模块可以拍摄多张图像,并使用RMagick将它们“拼接”成一个新的单个图像。 我能够成功创建最终图像,但是我无法将这个新图像保存为模型的附件(使用CarrierWave) 。 拼接方法如下所示: 我的用户模型安装了一个上传器: 在Activ
1回复

paperclip找不到“ file.jpg”导轨的处理程序4

我在其中一个应用程序中设置回形针宝石时遇到问题。 当我尝试保存上传的文件时,我No handler found for错误消息的No handler found for 。 我所做的事情 移民: 模型: 控制器: 视图: 当我尝试在控制器中执行
2回复

如何在Rails 3中使用没有模型的回形针上传图像?

我想在没有模型的情况下在Rails 3.2中实现Papereclip 。 我是RoR和Paperclip的新手。 我按照本教程使用了回形针。 它运行成功。 但是在本教程中他们已经展示了模型的使用,我不想使用模型或者不想修改现有模型。
2回复

Ruby on Rails的表格搜索字段

我对Rails相当陌生,但是具有广泛的Java / C ++背景,并且正在研究一个使用以下html显示搜索框和表格的项目: 我想要的是一个搜索框,它使您可以使用user_id从本质上“查询”表并退还用户。 理想情况下,当我按下搜索按钮时,我希望不重定向到新页面即可执行此操作。 如