问题描述
我是Stimulus JS的新手。我有点想使用collection_select
以一种形式(用rails g支架创建)触发简单事件。
这是我的dropdown-controller.js
(刺激)文件:
import { Controller } from "stimulus"
export default class extends Controller {
static targets = ["target"];
handleChange() {
console.log('works!')
}
}
这是我的_forms.html.erb
文件:
<%= form_with(model: stock_order,local: true) do |form| %>
...
<section data-controller="dropdown">
<div class="field">
<%= form.label :company_id %>
<%= form.collection_select :company_id,Company.all,:id,:name,data: {action: "change->dropdown#handleChange"} %>
</div>
</section>
<div class="actions">
<%= form.submit %>
</div>
<% end %>
我尝试了很多事情:
<%= form.collection_select :company_id,data: {action: "change->dropdown#handleChange"} %>
<%= form.collection_select :company_id,{data: {action: "change->dropdown#handleChange"}} %>
<%= form.collection_select :company_id,data: {action: "dropdown#handleChange"} %>
...等
如果我使用html select标记而不是rails的console.log('works!)
,则只能解雇collection_select
。如果创建测试按钮或使用form.check_Box
,则会触发该事件。
有什么想法吗?抱歉,这是一个愚蠢的问题,我没主意了。
谢谢!
解决方法
Thread 1 hit Breakpoint 1,network::TcpListener::nonBlockingNext (this=0x640f840)
at test/../src/NetworkConnection.hpp:40
40 unique_ptr<TcpSocket> new_socket (new TcpSocket) ;
(gdb) n
41 listener.setBlocking(false);
(gdb)
42 if( listener.accept(*new_socket) == ::sf::Socket::Status::Done)
(gdb)
44 new_socket->setBlocking(false);
(gdb)
45 std::cout << "Connection established! " << new_socket.get() << "\n";
(gdb)
Connection established! 0x6526340
46 return std::move(new_socket);
(gdb)
40 unique_ptr<TcpSocket> new_socket (new TcpSocket) ; <<<<<<--------- here
(gdb)
49 }
(gdb)
network::ConnectionReception::processNextIncoming (this=0x640f840) at test/../src/NetworkConnection.hpp:79
79 std::cout << " and then " << new_socket.get() << "\n";
(gdb)
and then 0
80 if( !new_socket ) return false;
(gdb)
是html属性,因此您在data-
调用中错过了一个参数
form.collection_select