小编Jes*_*mer的帖子

Ruby - 关键字参数 - 您能将所有关键字参数视为哈希吗?怎么样?

我有一个看起来像这样的方法:

def method(:name => nil, :color => nil, shoe_size => nil) 
  SomeOtherObject.some_other_method(THE HASH THAT THOSE KEYWORD ARGUMENTS WOULD MAKE)
end
Run Code Online (Sandbox Code Playgroud)

对于任何给定的调用,我可以接受任意值的任意组合.我喜欢命名参数,因为我可以查看方法的签名以查看可用的选项.

我不知道的是,如果上面的代码示例中有大写字母描述的快捷方式.

回到过去,它曾经是:

def method(opts)
  SomeOtherObject.some_other_method(opts)
end
Run Code Online (Sandbox Code Playgroud)

优雅,简单,几乎作弊.

这些关键字参数是否有快捷方式,还是我必须在方法调用中重构我的选项哈希?

ruby hash arguments options keyword

30
推荐指数
2
解决办法
6709
查看次数

如何在刺激控制器中监听 Select2 事件?

我正在尝试通过 .Stimulus 控制器监听 Select2 事件data-action

我有一个刺激控制器,其中包含了 Select2 事件的事件侦听器,但我无法侦听 HTML 中的 Select2 事件。

import { Controller } from 'stimulus';

export default class extends Controller {
  initialize() {
    const $element = window.$(this.element);

    $element.select2({
    });

    $element.on('select2:select select2:unselect', (_event) => {
      this.element.dispatchEvent(new Event('change'));
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

我必须使用 Stimulus 属性监听“change”事件data-action,而不是“select2”事件。以下代码有效。通过收听data-action-"select2:select"不起作用。

<%= f.select :name, ['name1', 'name2'], data: {'controller' => 'select2'} %>
Run Code Online (Sandbox Code Playgroud)

我想监听具有该data-action属性的事件,因为旨在使用刺激。

我可以使用 Stimulus 监听 Select2 事件吗?

javascript ruby-on-rails jquery-select2 stimulusjs

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