我认为这应该很简单,但无法弄清楚。
我试图通过点击按钮添加一些表单字段,但我有一个限制,每个新字段都必须编号。所以我必须在客户端有一个柜台。
我陷入了第一步,我无法在客户端制作一个计数器变量。我非常确定我的代码没有执行,因为我甚至没有得到#34;加载"消息。
但我不知道为什么我的javscript不起作用。我在控制台上收到以下错误:
Uncaught ReferenceError: addQuickReply is not defined
at HTMLAnchorElement.onclick
当我将该功能添加到buyer.coffee函数时:
@addQuickReply = (counter) ->
alert("counter is:"+counter)
我收到此提醒:
counter is:undefined
<div class="col-md-8 col-md-offset-2">
<h3>Responder <%= @buyer.name %></h3>
<ul class="nav nav-pills">
</li>
<li role="presentation" id="quick-button">
<%= link_to 'Quick Reply', load_form_path(id: @buyer.id, type: "quick"), method: :post,
remote: true %>
</li>
</ul>
<div id="form-container">
</div>
</div>
document.getElementById('form-container').innerHTML = '<%= j render(@type) %>';
</br>
<%= javascript_include_tag "load_quick_reply" %>
<%= form_tag("/answers/quick", method: "post", class: "form-horizontal") do %>
<%= hidden_field_tag("type", "quick") %>
<%= hidden_field_tag("buyer_id", @buyer.id) %>
<div class="row">
<div class="col-md-12">
<div class="form-group">
<label for="title" class="col-sm-2 control-label">Texto</label>
<div class="col-sm-10">
<%= text_field_tag(:text,nil, class: "form-control") %>
</div>
</div>
</div>
</div>
<div class="replies">
<%= render partial: 'quick_each', locals: {number: 0} %>
</div>
<div class="row">
<div class="col-md-3">
<div class="form-group">
<a class="btn btn-primary" onclick="addQuickReply()">New Reply</a>
<%= submit_tag("Enviar" , role: "button", class: "btn btn-info" ) %>
</div>
</div>
</div>
<% end %>
<script type="text/javascript">
alert("loaded");
var counter=0;
var container = document.getElementById("replies");
function addQuickReply(){
counter++;
alert("counter is :"+counter);
}
</script>
答案 0 :(得分:0)
Rails是后端js是前端,你试图让rails变量从前面收到一些东西,你不能这样做,你可以从后端向前发送一些东西。
所以在你的代码中,这必须传递一个参数作为js函数的计数器:
<a class="btn btn-primary" onclick="addQuickReply(params)">New Reply</a>
这一定是这样的:
addQuickReply = (counter) ->
alert("counter is:"+counter)
显示错误是因为您没有创建js函数。
我认为这可能会解决您的问题。