通过Ruby On Rails中的jquery的onclick函数传递对象的id

Sar*_*'Cl 3 javascript ruby jquery ruby-on-rails ruby-on-rails-3

我有一个控制器VendorController.并且查看文件是index.html.erb

我想通过onclick函数传递供应商的ID.这是我的代码

代码下 vendors_controller.rb

def index
  @vendor = Vendor.all
end
Run Code Online (Sandbox Code Playgroud)

代码 index.html.erb

<script language="javascript" type="text/javascript">
function func1(id) {
    alert(_id);
}

function func2(id) {
    alert(id);
}
</script>


<% @vendors.each do |vendor| %>
  <tr>
    <td><%=link_to vendor.name , '#',  onclick: "func1(1)", remote: true %></td>
    <td><%= link_to vendor.id, '#', :onclick => 'func2(vendor.id)' %></td>
  </tr>
<% end %>
Run Code Online (Sandbox Code Playgroud)

因为func1()我得到警报.但是因为func2我没有得到任何回应.请帮助..提前谢谢你.

alk*_*fee 10

@ max-williams的答案应该可以解决你的问题.但我还建议您探索将<tr>标记中的记录ID 作为数据属性嵌入而不是写出onclick函数的选项.然后在JS中,您可以在事件侦听器中动态选择ID.

考虑:

<tr data-id="<%= vendor.id %>">
  <td><%= link_to vendor.id, '#', :class=>"vendor-link" %></td>
</tr>
Run Code Online (Sandbox Code Playgroud)

然后只是听取点击:

$( ".vendor-link" ).click(function() {
  id = $(this).closest("tr").data("id");
  alert(id);
});
Run Code Online (Sandbox Code Playgroud)

此方法将您的JS与HTML模板分开,并使其更易于管理.此外,您还可以附加多个单击功能,为您提供更多灵活性.