rails - 可以使用方法和javascript进行onclick工作吗?

时间:2016-01-07 14:37:39

标签: ruby-on-rails

如果我使用以下行设置指向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”]

但如果点击某些复选框,似乎没有任何改变。

1 个答案:

答案 0 :(得分:3)

我认为这个问题缺乏一些严肃的概念知识。 onchange在客户端触发,“在浏览器中”。您不能在服务器中放置一个回调函数来触发该事件。您应该拥有一个JavaScript函数,该函数执行ajax调用以执行您在服务器端执行的操作。

编辑:页面中的所有Ruby代码都在服务器中执行,生成的html和js是唯一发送到浏览器的代码。