下载图像并保存

什么是下载图像并保存的最佳方式? 我目前的代码是: temp_file = Tempfile.new “filename”, “#{RAILS_ROOT}/tmp/” temp_file.puts open(path_to_picture, ‘User-Agent’ => ‘Test’).read mimetype = `file -ib #{temp_file.path}`.gsub(/\n/,””) 但看起来,mimetyp还不行。 最好的祝福

rails carrierwave,上传多个文件

这是我的第一个问题stackoverflow 。 我试图一次修改上传多个文件。 new.html.erb // <==== I add this attraction_controller def new @attractions = Attraction.new @attractions.attraction_photos.build end def create @attractions = current_user.attractions.build(attraction_params) if @attractions.save flash[:success] = “success” redirect_to attractions_path else flash[:danger] = @attractions.errors.full_messages render action: :new end end def attraction_params params.require(:attraction).permit(:name, :longitude, :latitude, :address, :phone, :category_id, attraction_photos_attributes: [:photo => []]) end 我得到了参数是 { “name” => […]

Mongoid按日期分组

这是我的文件: { event_type: ‘click’, created_at: ‘2015-02-15 10:00:00’, user_id: 100 } 我需要每天使用event_type = click对唯一身份用户求和。 得到类似的东西: { count: 320, date: ‘2015-02-15’ } { count: 451, date: ‘2015-02-16’ } (注意日期格式) 我尝试了很多我在SO上找到的不同的东西,这个对我来说几乎有用 : 用Mongoid按日期分组的最佳方法我只是想不出如何修改它来完全按照我的需要做。 这是几乎做我想用Mongoid实现的原始查询: db.events.aggregate([ {$match: {event_type: ‘click’, created_at: { $gte: ISODate(‘2015-01-01T00:00:00.000Z’), $lt: ISODate(‘2016-01-01T00:00:00.000Z’) }}}, {$group: { _id: {user_id: ‘$user_id’, account_id: ‘$account_id’, created_at: { day: { $dayOfMonth: ‘$created_at’ […]

在Web浏览器中实现聊天系统

我们希望有基于Web的应用程序来跟踪问题,知识管理和聊天系统。 用户登录后,用户可以与服务工程师聊天。 我们将在浏览器中使用Ajax进行聊天。 但是服务器端我们不确定如何实现聊天? 必须保存聊天记录以进行横向查看。 当有人开始聊天时,系统必须找到可用的服务工程师,他将开始与客户接口。 任何更好的方法来处理网络聊天系统? 我们可以使用Python,PHP,Ruby / Rails,Grails或.NET 我们可以使用可用的系统,我们需要更好的接口/ api到可用的系统,以便它可以集成到我们的应用程序中。

更新Rails中的每个Array-Object值

基本上我想更新Rails 5中的Model的每个表列。 str = “abc—def” str.split(‘—‘).map do |a| Foo.where(product_id:1).update_all(bar: a) end 旧对象就像: [ [0] { product_id: 1, …, bar: “xxx”, … }, [1] { product_id: 1, …, bar: “xxx”, … } ] 新应该是这样的: [ [0] { product_id: 1, …, bar: “abc”, … }, [1] { product_id: 1, …, bar: “def”, … } ] 但我得到的是bar: “def”每个人都bar: […]

AuthLogic UserSessions Controller返回Nil

我已经设置了一个新的Rails应用程序并使用Authlogic进行身份validation。 我很高兴CRUD用户,但用户会话似乎有问题。 错误信息: undefined method `create’ for nil:NilClass app/controllers/user_sessions_controller.rb:9:in `create’ 应用程序/模型/ user.rb class User < ActiveRecord::Base acts_as_authentic end 应用程序/控制器/ user_sessions_controller.rb class UserSession < Authlogic::Session::Base end 应用程序/模型/ user_session.rb class UserSessionsController < ApplicationController def new @user_sesssion = UserSession.new end def create @user_sesssion = UserSession.new(params[:user_session]) if @user_session.create flash[:notice] = "Welcome back!" redirect_to root_path else render :new end end […]

Rails 4活动记录validation – 如果存在至少一个属性而有条件地validation4个属性的存在,同时不允许存在

我有一个包含10个属性的表单。 其中我有4个属性,我需要应用我称之为“互为条件存在”的Active Recordvalidation。 我要那个 (A)如果至少存在一个,则必须存在另外3个 (B)仍然不允许存在(如果其他3为空白,则第四个有空白) 以下是四个属性: 地址第一行 邮政编码 州 国家 这意味着如果用户填写其中一个,那么所有其他人必须在场。 但如果一切都是空白的,那没关系。 到目前为止,我只能设法强制执行(A)。 但我未能实施(B)。 实际上,当我尝试在4个属性validation中的一个上使用allow_blank:true时,它会中断(A),因为在此之后,它不能确保如果存在属性,则其他属性也必须如此。 这该怎么做? 这是我目前的代码 规格/型号/用户 validates :address_line_1, presence: true, if: :pa_subelements_mutual_presence? length: { maximum: 100, minimum: 3 } validates :zipcode, presence: true, if: :pa_subelements_mutual_presence?, length: { maximum: 20, minimum: 4} validates :state, presence: true, if: :pa_subelements_mutual_presence?, validates :country, presence: true, if: […]

在Ruby on Rails中,在“gem install ”之后,如何使它扩展Array,或者使用它的类方法?

总结:在我gem install ,如何让它扩展gem可以做的? 细节: 我看到了“自然语言排序”的gem,即 http://rubygems.org/gems/naturalsort http://naturalsort.rubyforge.org/ 所以我使用的是Ruby 1.9.2和Rails 3.0.6,我添加了这一行 gem ‘naturalsort’ 进入Gemfile ,并做一个bundle install并重新启动服务器,但是现在,由于某种原因,我仍然无法做到 NaturalSort::naturalsort [‘a’, ‘b’, ‘c’, ‘d’, ‘A’, ‘B’, ‘C’, ‘D’] 在我的帮助文件中? 怎么做到呢? 另外,扩展数组会很好,所以可以通过arr.natural_sort完成,但我必须添加行 require ‘natural_sort_kernel’ 到帮助文件的开头。 好处是它有效,但require每个地方都有点麻烦。 有没有办法让它工作,可能还要修改Gemfile或其他东西?

权限被拒绝从Ruby gem运行方法

我正在使用名为IMGKit的gem,当我在控制台中使用gem的to_img方法时,我收到此错误: IMGKit::CommandFailedError: Command failed: /rubyprograms/search –format jpg http://google.com -: /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open3.rb:67:in `exec’: Permission denied – /rubyprograms/search (Errno::EACCES) from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open3.rb:67:in `popen3′ from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/open3.rb:53:in `fork’ 我不知道发生了什么事。 这是to_img方法: def to_img(format = nil) append_stylesheets set_format(format) result = nil stderr_output = nil Open3.popen3(*command) do |stdin,stdout,stderr| stdin << (@source.to_s) if @source.html? stdin.close result = stdout.gets(nil) result.force_encoding("ASCII-8BIT") if result.respond_to? :force_encoding stderr_output = stderr.readlines.join […]

public_id在cloudinary和carrierwave之间不匹配

我正在使用CarrierWave和Cloudinary将多张图片上传到我的博客post。 我从浏览器上传它们。 使用post表单中的文件字段会发生这种情况。 提交表单时,会为每个图像创建一个picture实例,并将图像上传到Cloudinary。 def create @post = Post.new(post_params) if @post.save if params[:images] params[:images].each do |image| @post.pictures.create(image: image) Cloudinary::Uploader.upload(image) end end end end 我使用的ImageUploader几乎是默认的(包含cloudinary插件的exept) class ImageUploader < CarrierWave::Uploader::Base include Cloudinary::CarrierWave storage :file def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end end 现在,图像正在保存到我的服务器,图像正在上传到cloudinary。 但不知何故, public_id’s永远不会匹配。 有谁知道为什么不呢? 当我调用Cloudinary::Uploader.upload(image)时是否创建了新的public_id ?