如果我使用以下行设置指向javascript函数的onchange操作,它似乎工作。
<% @documents.each do |document| %>
<td>< %= check_box_tag "document_ids[]", document.id, checked_flag,
:onchange => "myFunction(#{document.id})" %></td>
但是,如果我尝试指向def /方法,它将无法按预期工作。似乎在显示每一行时调用该方法。我认为onchange / onclick仅在发生更改或点击时才调用该操作。
<td><%= check_box_tag "document_ids[]", document.id, checked_flag, {:onchange => handle_checkboxes(document.id,checked_flag)} %></td>
Ruby / Rails允许您使用onchange/onclick
调用checkbox_tag
的方法吗?
我的目标是构建一个数组,我可以在查找中使用它来显示已检查的文档。
def handle_checkboxes(id,flag)
$doc_ids.push(id.to_s)
$test2[id] = 'push'
$test3 = 'We arrived'
end
如果我在方法中使用checkbox_tag
,变量看起来像
$ doc_ids.inspect [“9999999”,“21”,“22”,“23”,“24”,“25”,“26”,“27”,“28”,“29”]
$ test2.inspect [“initial”,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零,零, nil,“push”,“push”,“push”,“push”,“push”,“push”,“push”,“push”,“push”]
但如果点击某些复选框,似乎没有任何改变。
答案 0 :(得分:3)
我认为这个问题缺乏一些严肃的概念知识。 onchange
在客户端触发,“在浏览器中”。您不能在服务器中放置一个回调函数来触发该事件。您应该拥有一个JavaScript函数,该函数执行ajax调用以执行您在服务器端执行的操作。
编辑:页面中的所有Ruby代码都在服务器中执行,生成的html和js是唯一发送到浏览器的代码。