繁体   English   中英

使用Rails / JS的客户端变量

[英]Client-side variable with Rails/JS

我认为这应该很简单,但无法弄清楚。

我试图通过单击按钮添加一些表单字段,但是我有一个限制,每个新字段都必须编号。 因此,我必须在客户端有一个柜台。

第一步,我无法在客户端进行计数器变量的设置。 我很确定我的代码没有执行,因为我什至没有收到“已加载”消息。

但是我不知道为什么我的脚本无法正常工作。 我在控制台上收到以下错误:

Uncaught ReferenceError: addQuickReply is not defined
    at HTMLAnchorElement.onclick

当我将功能添加到Buyers.coffee时,该功能:

@addQuickReply = (counter) ->
  alert("counter is:"+counter)

我收到此警报:

counter is:undefined

/views/buyers/answer.html.erb

<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>

/views/buyers/load_form.js.erb.html

document.getElementById('form-container').innerHTML = '<%= j render(@type) %>';

/views/buyers/_quick.html.erb

</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>

Rails是后端js是前端,您试图使Rails变量从前端接收某些内容,则不能这样做,您可以从后端向前端发送一些内容。

因此,在您的代码中,这必须传递一个paramether作为js函数的计数器:

<a class="btn btn-primary" onclick="addQuickReply(params)">New Reply</a>

这一定是这样的:

addQuickReply = (counter) ->
alert("counter is:"+counter)

显示该错误是因为您没有创建js函数。

我认为这可以解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM