小编Lew*_*uce的帖子

将字符串传递给javascript函数

简单的问题.如何将字符串传递给javascript函数并生成包含该字符串内容的弹出框警报?这就是我所拥有的:

test.html.erb文件.

<%= link_to 'Test','#', onclick: 'test(helloworld)', class: "btn btn-xs btn-primary" %>
Run Code Online (Sandbox Code Playgroud)

这是test.js文件:

function test(name){
     alert(name);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我点击生成的"测试"链接时,"helloworld"不会弹出.什么都没发生.

javascript jquery

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

TinyMCE仅在页面刷新时加载

我正在使用带有Ruby on Rails的Tinymce-Rails并试图弄清楚为什么除非我刷新页面,否则TinyMCE文本编辑框不起作用.

所以我已经按照所有文档来使它工作......但唯一的问题是它只在我第一次刷新页面后才有效.这是负责初始化TinyMCE的javascript

var ready;

ready = function(){
  tinyMCE.init({
    selector: "textarea.tinymce",
    toolbar: ["styleselect | undo redo | bold italic underline | bullist | outdent indent"],
    menubar: false,
    statusbar: false,
    style_formats: [{"title":"Headers","items":[{"title":"Header 1","format":"h1"},{"title":"Header 2","format":"h2"},{"title":"Header 3","format":"h3"}]},{"title":"Inline","items":[{"title":"Bold","icon":"bold","format":"bold"},{"title":"Italic","icon":"italic","format":"italic"},{"title":"Underline","icon":"underline","format":"underline"},{"title":"Code","icon":"code","format":"code"}]}],
    content_css: "/assets/tinymce.css"
  });

};

$(document).ready(ready);
$(document).on('page:load', ready);
Run Code Online (Sandbox Code Playgroud)

有没有人知道为什么当我第一次浏览页面时这实际上没有工作,但只能第二次工作?

javascript jquery ruby-on-rails

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

Redis 随机开始抱怨无法保存 RDB 快照

所以我正在运行一个利用 redis 和 sidekiq 的 Rails 应用程序。该config/sidekiq.rb文件包含一些关于设置 Redis 池大小的信息,但我将其注释掉,以便 Sidekiq 可以动态确定(根据我的理解)。

因此,虽然我在后台运行了一些 sidekiq 作业,但一切正常。然而,大约 30 - 60 分钟后,sidekiq 似乎仍在运行,但它像每分钟一样吐出这个错误(猜测这是我的 sidekiq cron 作业的间隔):

2018-01-19T17:52:21.906Z 95551 TID-ovs5kqylg 错误:CRON JOB:MISCONF Redis 配置为保存 RDB 快照,但目前无法在磁盘上持久化。可以修改数据集的命令被禁用,因为这个实例被配置为在 RDB 快照失败时报告写入错误(stop-writes-on-bgsave-error 选项)。有关 RDB 错误的详细信息,请检查 Redis 日志。

2018-01-19T17:52:21.906Z 95551 TID-ovs5kqylg 错误:CRON 作业:/home/nutella/.rvm/rubies/ruby-2.5.0/lib/ruby/gems/2.5.0/gems/redis-4.0 .1/lib/redis/client.rb:119:in`调用'

为了解决这个问题,我必须终止 sidekiq 进程并重新启动它 30-60 分钟。

ruby cron ruby-on-rails redis sidekiq

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

无法使用 gem,因为 json 2.1.0 已激活,但 gem 需要 1.8.6

我一直在试图弄清楚如何让slack-ruby-clientgem 在我的 Ruby 脚本中工作,但显然我在 json 方面遇到了问题。

这是我得到的:

[user:ubuntu:~/Documents]$ irb                                                                                                                  4:43PM/07.08
2.5.1 :001 > require 'slack-ruby-client'
Traceback (most recent call last):
       11: from /home/user/.rvm/rubies/ruby-2.5.1/bin/irb:11:in `<main>'
       10: from (irb):1
        9: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39:in `require'
        8: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
        7: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `require'
        6: from /home/user/.rvm/gems/ruby-2.5.1/gems/slack-ruby-client-0.11.1/lib/slack-ruby-client.rb:13:in `<top (required)>'
        5: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:90:in `require'
        4: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:90:in `each'
        3: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:91:in `block in require'
        2: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/specification.rb:1434:in `activate'
        1: from /home/user/.rvm/rubies/ruby-2.5.1/lib/ruby/2.5.0/rubygems/specification.rb:2315:in `check_version_conflict'
Gem::LoadError (can't activate json-1.8.6, already activated json-2.1.0)
2.5.1 :002 > …
Run Code Online (Sandbox Code Playgroud)

ruby json rubygems slack

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

我可以在 Ruby on Rails 中使用 JavaScript 部分吗?Partial 正在尝试以 HTML 形式呈现

我有一个功能,可以简单地选择当前页面上的所有复选框,创建一个表单,然后自动提交。

我不想在每个视图上重复完全相同的 JavaScript 代码,而是尝试只拥有共享的部分代码。

这是我迄今为止所拥有的一切:

#views/shared/_delete_multiple_items.js.erb
alert("<%= random_variable %>");
Run Code Online (Sandbox Code Playgroud)

#views/users/index.html.erb
...
<script>
  function deleteMulitpleUsers() {
    <%= render 'shared/delete_multiple_items', :locals => {:random_variable => "Hello World" %>
  }
</script>
Run Code Online (Sandbox Code Playgroud)

如果我正确理解这个错误的话,Rails 似乎正在尝试在 HTML 中渲染部分内容:

缺少部分共享/_delete_multiple_items 与 {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :红宝石,:咖啡,:jbuilder]}。搜索于:

我尝试将其包含:formats => :js在渲染中,如下所示:

<%= render 'shared/delete_multiple_items', :locals => {:random_variable => "Hello World", :formats => :js %>
Run Code Online (Sandbox Code Playgroud)

但我仍然得到同样的错误。

javascript ruby ruby-on-rails

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

rails activerecord 迁移中的索引名称太长。尝试手动添加索引,同样的错误

所以我name在添加索引时通过使用参数成功创建了连接表,但我不确定为什么当我尝试创建新迁移时这不起作用:

class CreateVMailCampaignScheduleHours < ActiveRecord::Migration[5.1]
  def change
    create_table :v_mail_campaign_schedule_hours do |t|
      t.belongs_to :v_mail_campaign_schedule, foreign_key: true
      t.string :day
      t.time :start_hours
      t.time :stop_hours

      t.timestamps
    end
    add_index [:v_mail_campaign_schedule_hours, :v_mail_campaign_schedule_id], name: :v_mail_campaign_schedule_id
  end
end
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

ArgumentError:表“v_mail_campaign_schedule_hours”上的索引名称“index_v_mail_campaign_schedule_hours_on_v_mail_campaign_schedule_id”太长;限制为 64 个字符

有什么建议?我以为我add_index会做到这一点,但显然不是。

ruby-on-rails rails-migrations

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

Docker save 无法导出 ~50GB 图像,因为没有空间,尽管我有 150GB 可用空间

我只是想导出我拥有的 Docker 映像,以便可以将其推送到另一个系统;但是,由于没有空间,我什至无法保存它:

$ docker save mycustomimage:latest -o nessus.tar
Error response from daemon: write /var/lib/docker/tmp/docker-export-255300778/f2881cc25962de53a9f4efdbf759e88c86bd183abf773477ebbd5ddebc229ae8/layer.tar: no space left on device
Run Code Online (Sandbox Code Playgroud)

但是,如果我运行df -h,我可以确认我有超过 150GB 的可用空间:

$ df -h
Filesystem      Size   Used  Avail Capacity     iused               ifree %iused  Mounted on
/dev/disk1s1   466Gi  275Gi  182Gi    61%     1290334 9223372036853485473    0%   /
devfs          374Ki  374Ki    0Bi   100%        1296                   0  100%   /dev
/dev/disk1s4   466Gi  8.0Gi  182Gi     5%           8 9223372036854775799    0%   /private/var/vm
map -hosts       0Bi    0Bi    0Bi   100%           0                   0  100%   /net
map auto_home    0Bi    0Bi …
Run Code Online (Sandbox Code Playgroud)

docker

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

如何定位特定的 tmux 会话

我有一个使用 Tmux 在远程系统上运行命令的脚本,有时它会由于 Tmuxlist-windows命令的运行方式而出错。例如,如果我在远程服务器上有两个 Tmux 会话:session1session2。根据我是否在会话 1 或会话 2 中处于活动状态,tmux list-windows从Tmux外部运行会给出两个完全不同的结果:

这是一个例子:

[root:kali:]# tmux ls
session1: 2 windows (created Tue Nov  5 18:22:58 2019)
session2: 3 windows (created Wed Nov  6 18:21:04 2019)

[root:kali:]# tmux list-windows
0: zsh* (1 panes) [215x53] [layout 5de0,215x53,0,0,30] @28 (active)
1: tool (1 panes) [80x24] [layout 5963,80x24,0,0,33] @31
2: script- (1 panes) [215x53] [layout 5de4,215x53,0,0,34] @32

[root:kali:]# tmux a -t session1
[detached (from session session1)] …
Run Code Online (Sandbox Code Playgroud)

bash tmux

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

将函数存储在散列中键的值中

现在,我的 ruby​​ 代码如下所示:

case step
when 1
   # step_two_function
when 2
   # step_three_function
when 3
   # step_four_function
end
Run Code Online (Sandbox Code Playgroud)

但是,我想知道是否可以将其存储在哈希中以使事情更简单一些?

例如,

h = {
   1 => step_two_function,
   2 => step_three_function,
   3 => step_four_function,
}
Run Code Online (Sandbox Code Playgroud)

并且能够简单地使用类似h[step]. 似乎在 Ruby 中,函数在创建哈希的同时执行,而不是仅在调用键的值时执行。

这样做是否可行,如果可以,如何做?

在 python 中,您只需简单地执行以下操作:

>>> def lies(altons_var):
...     print(altons_var)
... 
>>> a[1] = lies
>>> a[1]('print me please')
print me please
Run Code Online (Sandbox Code Playgroud)

但这在 Ruby 中不起作用,因为在您调用函数的那一刻(无论是直接调用还是从散列调用),它都会执行该函数。

ruby

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

如何在不打开整个文件的情况下替换 Ruby 中文件的前几个字节?

我有一个 30MB 的 XML 文件,开头包含一些乱码,因此通常我必须删除它,以便 Nokogiri 能够正确解析 XML 文档。

这是我目前拥有的:

    contents = File.open(file_path).read
    if contents[0..123].include? 'authenticate_response'
      fixed_contents = File.open(file_path).read[123..-1]
      File.open(file_path, 'w') { |f| f.write(fixed_contents) }
    end
Run Code Online (Sandbox Code Playgroud)

但是,这实际上会导致 ruby​​ 脚本两次打开大型 XML 文件。一次读取前 123 个字符,另一次读取除前 123 个字符以外的所有字符。

为了解决第一个问题,我能够做到这一点:

contents = File.open(file_path).read(123)
Run Code Online (Sandbox Code Playgroud)

但是,现在我需要从文件中删除这些字符而不读取整个文件。如何“修剪”该文件的开头而不必在内存中打开整个文件?

ruby

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

Apache 2子域名?

我一直在寻找有关如何做到的文章,但我找到了任何详细而直接的指示.我知道有很多与此有关的信息,但也许我只是不寻找合适的东西.

在我的域名的控制面板中,我添加blog.domain.com了转到我的网络服务器的IP地址.但是,在Apache的配置中,我希望能够指向blog.domain.com某个文件夹.

我需要修改哪个文件以及需要添加哪些文件?

apache

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

单击一次,将侧边栏活动菜单项设置为class =“ active”吗?

我在这里最近发表了一篇文章,并在解决第一个问题后将其关闭,但仍然无法修复此问题。

我有一个带有“客户”,“项目”等链接的边栏。它们链接到相应的页面。但是,我希望能够为我单击的菜单项设置,无论是“项目”还是“客户”。

这是侧边栏HTML(轨道上的红宝石):

  <div id="sidebar" class="sidebar-offcanvas">
      <div class="col-md-12">
        <h3></h3>
        <ul class="nav nav-pills nav-stacked">
            <li><%= link_to 'Customer Management', customers_path %></li>
            <li><%= link_to 'Project Management', projects_path %></li>
        </ul>
      </div>
  </div>
Run Code Online (Sandbox Code Playgroud)

这是HTML下方的JavaScript:

<script type='text/javascript'>
    $(document).ready(function() {
      $('#sidebar .nav-pills a').click(function() {
        $('#sidebar .nav-pills li.active').removeClass('active');
        $(this).parent().addClass('active');
      });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

当我单击“客户”页面时,没有任何反应。但是,如果将第一个<li>设置为活动类,则可以看到class =“ active” css样式应用于它。

这是它背后的CSS:

body,html,.row-offcanvas {
  height:100%;
}

body {
  padding-top: 50px;
}

#sidebar {
  width: inherit;
  min-width: 220px;
  max-width: 220px;
  background-color:#E6E5E5;
  float: left;
  height:100%;
  position:relative;
  overflow-y:auto;
  overflow-x:hidden;
}
#main {
  height:100%;
  overflow:auto; …
Run Code Online (Sandbox Code Playgroud)

jquery ruby-on-rails

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

构建多架构 Docker 镜像,但 Dockerfile 根据架构需要不同的包

我正在尝试使用 docker buildx,并注意到除了一件事之外,一切似乎都很简单。我的 Dockerfile 需要根据架构提取某些包。

例如,这是 Dockerfile 的一部分:

FROM XYZ

# Set environment variable for non-interactive install
ARG DEBIAN_FRONTEND=noninteractive

# Run basic commands to update the image and install basic stuff.
RUN apt update && \
    apt dist-upgrade -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" && \
    apt autoremove -y && \
    apt clean -y && \
    ...
    # Install amazon-ssm-agent
    mkdir /tmp/ssm && \
    curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb && \ 
Run Code Online (Sandbox Code Playgroud)

从上面可以看出,该命令设置为使用硬编码链接拉取 Amazon SSM 代理。

解决这个问题的最佳方法是什么?我应该修改这个 Dockerfile 来创建一堆 if 条件吗?

docker

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