小编med*_*zid的帖子

rails 4 has_secure_password呈现密码确认可选

使用rails 4我在我的用户模型中使用has_secure_password,技巧说如果我没有设置:password_confirmation它将永远不会被触发,但为什么当我运行测试时我得到错误:密码确认不能为空如下:

Failures:

1) User 
 Failure/Error: it { should be_valid }
   expected #<User id: nil, name: "joe", email: "joe@mail.com", created_at: nil, 
   updated_at: nil, password_digest: "$2a$04$mcRr/msgYQR3kBVc3kv/m.UotBJuJuSXZKMw
   /eHTvU87..."> to be valid, but got errors: Password confirmation can't be blank
Run Code Online (Sandbox Code Playgroud)

我的测试文件看起来像:

require 'spec_helper'

describe User do

   before { @user = User.new(name: 'joe', email: 'joe@mail.com', password: 'foo') }

   subject { @user }
   #....
   #....
   describe "when password is not present" do
     before { @user.password = "" }
     it { should_not …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

6
推荐指数
2
解决办法
5430
查看次数

方法定义以括号开头,无法理解其用处

在Ruby中,我看到一个方法的定义如下:

def [](param)
   # do stuff
end
Run Code Online (Sandbox Code Playgroud)

这种方法声明是什么意思?它是如何工作的?什么时候用?以及如何使用实例对象调用这种方法?

ruby

6
推荐指数
1
解决办法
127
查看次数

是否可以显示包含jsonb属性字段的表单

我有一个jsonb名为的产品型号dynamic.

我实际上有2个产品记录

产品1:

dynamic = {"name": "super product 1", "description": "lorem ipsum text" }
Run Code Online (Sandbox Code Playgroud)

产品2:

dynamic = {"title": "this is an ebook", "author": "john doe", "creation_date": "2015"}
Run Code Online (Sandbox Code Playgroud)

要编辑每个产品,我需要显示一个表单.对于产品1,表单将包含2个字段(名称和描述),而对于产品2,表单将包含3个字段(title,author,creation_date)

我搜索了但似乎我发现的所有文章都谈到了如何使用控制台来保存或编辑json字段,但没有人谈论如何使用表单.

有什么帮助吗?谢谢

postgresql json ruby-on-rails jsonb

6
推荐指数
1
解决办法
2273
查看次数

是否有统一的方法在Rails 6中安装JS第三方库(如QuillJS)?

我安装了Rails 6 RC1,并且想用它创建一个新项目,但是由于webpack的默认功能,它变成了一场噩梦,如果要添加jQuery和bootstrap的话,安装第三方JS库将很困难。例如,您应该environment.js像这样进行一些奇怪的设置

environment.plugins.prepend('Provide', new webpack.ProvidePlugin({
        $: 'jquery',
        JQuery: 'jquery',
        jquery: 'jquery',
        Popper: ['popper.js', 'default'], // for Bootstrap 4
    })
)
Run Code Online (Sandbox Code Playgroud)

如果要添加jQuery-ui,则必须进行搜索,希望可以找到一些链接,向您显示链接

// jquery
import $ from 'jquery';

global.$ = $
global.jQuery = $


require('jquery-ui');

// jquery-ui theme
require.context('file-loader?name=[path][name].[ext]&context=node_modules/jquery-ui-dist!jquery-ui-dist', true,    /jquery-ui\.css/ );
require.context('file-loader?name=[path][name].[ext]&context=node_modules/jquery-ui-dist!jquery-ui-dist', true,    /jquery-ui\.theme\.css/ );
Run Code Online (Sandbox Code Playgroud)

现在,如果要添加QuillJS怎么办?您可能会像我一样进行研究,最后出现在QuillJS文档中,该文档告诉您添加:

import Quill from 'quill/core';

import Toolbar from 'quill/modules/toolbar';
import Snow from 'quill/themes/snow';

import Bold from 'quill/formats/bold';
import Italic from 'quill/formats/italic';
import Header from …
Run Code Online (Sandbox Code Playgroud)

javascript ruby-on-rails webpack ruby-on-rails-6

6
推荐指数
1
解决办法
74
查看次数

使用carrierwave清理tmp目录

我使用carrierwave为我的图像上传,在我的表单中,我添加了一个隐藏的字段用于缓存,如文档中所述.

= form_for @user, html: {multipart: true} do |f|
%p
  = f.label :image, "your image"
  = f.file_field :image, id: "img"
  = f.hidden_field :image_cache
Run Code Online (Sandbox Code Playgroud)

但问题是在上传图像并保存记录后,tmp目录仍然具有所有临时/缓存文件.

有办法清理tmp目录吗?

我在这里发现了这篇文章,但也无法理解,并没有解释简单的例子

编辑

我试着用控制台运行这个命令

CarrierWave.clean_cached_files!
Run Code Online (Sandbox Code Playgroud)

它输出一个tmp目录中所有文件的数组,如下所示:

["/home/medBo/projects/my_project/public/uploads/tmp/1380732930-5006-6671","/hom??e/medBo/projects/my_project/public/uploads/tmp/1380754280-4623-3698" ....
Run Code Online (Sandbox Code Playgroud)

但是当我去看看会发生什么时,我发现所有文件仍然存在于/ tmp中(未删除)

我试着在上面的链接中阅读更多内容,我发现了一个关于CarrierWave.clean_cached_files的特殊注意事项!:

特别注意事项

此方法会破坏定义了多个版本的上传程序.您的第一个版本将被保存,但之后将运行清理代码并删除用于生成其他版本的tmp文件.在这种情况下,您最好创建一个定期清理tmp文件夹的rake任务.

是什么意思:"这种方法打破了有多个版本的上传者"?(因为我在我的上传器类"拇指和大版本"中使用了两个版本):

class ImageUploader < CarrierWave::Uploader::Base

  # Include RMagick or MiniMagick support:
  include CarrierWave::RMagick
  # include CarrierWave::MiniMagick

  # Choose what kind of storage to use for this uploader:
  storage :file
  # storage :fog

  # Override the …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails carrierwave

5
推荐指数
2
解决办法
6877
查看次数

ajax:success和ajax:在Rails中使用UJS时,完全回调不起作用

我有一个链接,当我点击它将触发ajax调用,然后通过另一个链接替换此链接,例如说原始链接是"添加朋友",当我点击此链接它将发送ajax请求add_friend行动然后如果添加了朋友,上面的链接将被另一个链接"取消请求"替换,我使用ujs:

$("#link_for_friend").html("<%= escape_javascript(render('users/cancel_link')) %>")
Run Code Online (Sandbox Code Playgroud)

当我尝试添加回调(:成功和:完成)时,它不起作用,我尝试使用:beforeSend,如下所示:

$(document).ready ->
  $("#my_link").on "ajax:beforeSend", ->
    alert("hello")
Run Code Online (Sandbox Code Playgroud)

有成功和完全回调的解决方案吗?

注意:我的想法是在ajaxStart被触发时显示loader.gif然后在ajax:至少触发完成回调时隐藏它,如果有一些错误我想在ajax:error被触发时显示它

更新

我试图通过将action.js.erb中的代码移动到js文件来解决这个问题,如下所示:

  $(document).ready ->
  $(document).on("ajax:success", "a.invitation-box", ->
    $("#link_for_friend").html("<%= escape_javascript(render('users/cancel_link')) %>")
  ).on "ajax:error", "a.invitation-box", ->
    alert "error"
Run Code Online (Sandbox Code Playgroud)

但是这样就不可能将render('users/cancel_link')放在JS文件中

ajax jquery ruby-on-rails ujs

4
推荐指数
1
解决办法
8189
查看次数

如何使用ruby aws s3一次删除多个对象

我找不到如何使用ruby aws sdk一次删除多个对象,在文档中,他们有一个关于如何删除包含文件的文件夹的代码示例:

# batch operations, delete objects in batches of 1k
bucket.objects(prefix: '/tmp-files/').delete
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是,提供文件密钥并立即删除它们,如下所示:

    bucket.objects(keys: [
    'avatars/0b722c42-4003-42cc-887c-b820cad3aed9/avatar1.png',
'avatars/be1275f1-664f-4d47-9890-b5b2a066a18f/avatar2.jpg', 
    'avatars/f5051ed2-b2e7-4844-bdc7-ca19c1900ce8/avatar3.gif'
    ]).delete 
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

ruby ruby-on-rails amazon-s3 aws-sdk

4
推荐指数
1
解决办法
827
查看次数

错误迁移正在等待; 运行'rake db:migrate RAILS_ENV = development'来解决此问题

我试图回滚上次迁移:

rake db:rollback
Run Code Online (Sandbox Code Playgroud)

它告诉我以下内容:

==  AddUserIdToPictures: reverting ============================================
-- remove_index(:pictures, {:column=>[:user_id, :visible]})
-> 0.1201s
-- remove_column(:pictures, :user_id, :integer)
-> 0.0127s
==  AddUserIdToPictures: reverted (0.1567s) ===================================
Run Code Online (Sandbox Code Playgroud)

然后,如果我尝试访问某些页面,我会收到错误:

Migrations are pending; run 'rake db:migrate RAILS_ENV=development' to resolve this issue
Run Code Online (Sandbox Code Playgroud)

但当我做错误说:rake db:migrate RAILS_ENV = development,它重新创建我上面的回滚:

==  AddUserIdToPictures: migrating ============================================
-- add_column(:pictures, :user_id, :integer)
-> 0.0300s
-- add_index(:pictures, [:user_id, :visible])
-> 0.1007s
==  AddUserIdToPictures: migrated (0.1310s) ===================================
Run Code Online (Sandbox Code Playgroud)

这有什么不对?我应该在运行命令之前删除迁移文件吗?

ruby-on-rails

3
推荐指数
1
解决办法
2万
查看次数

尝试还原Postgres备份时权限被拒绝

最近,我使用此命令对我的postgres数据库进行了备份

pg_dumpall > BkpOldPG.sql
Run Code Online (Sandbox Code Playgroud)

删除旧版本的postgres后,我下载了最新版本9.4,并尝试使用以下命令恢复旧数据:

mody@debian:~$ su postgres
Password: 
postgres@debian:/home/mody$
postgres@debian:/home/mody$ /usr/lib/postgresql/9.4/bin/psql -d postgres -f Documents/Bkp01dPg.sql 
Documents/Bkp01dPg.sql: Permission denied
Run Code Online (Sandbox Code Playgroud)

如您所见,我被拒绝了权限,所以我尝试使用sudo,但是它不起作用:

postgres@debian:/home/mody$ sudo /usr/lib/postgresql/9.4/bin/psql -d postgres -f Documents/Bkp01dPg.sql 
[sudo] password for postgres: 
postgres is not in the sudoers file.  This incident will be reported.
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

谢谢!

postgresql debian

3
推荐指数
1
解决办法
6386
查看次数

Summernote onKeyup 事件没有按预期工作

我将summernote编辑器应用于textarea,我希望当我在编辑器中输入一些文本时,该文本应该反映在一个div中,所以我有一个textarea和一个div#result,其中应该在每个keyup上写入更改事件 :

<textarea class="description"></textarea>

<br>

<div id="result">Text should change here</div>
Run Code Online (Sandbox Code Playgroud)

我正在使用回调 onKeyup :

$('.description').summernote({
  callbacks: {
    onKeyup: function(e) {
      $("#result").html($('.description').val());
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

这是用于演示目的的 jsfiddle:

https://jsfiddle.net/vLdhpx5t/1/

当我输入一些连续文本时,div 中的内容不会改变,或者至少它不会完全匹配我的 summernote 编辑器的内容

jquery summernote

3
推荐指数
1
解决办法
3135
查看次数