【问题标题】:Using javascript data to populate rails params使用 javascript 数据填充 rails 参数
【发布时间】:2016-04-04 07:45:58
【问题描述】:

以下表单旨在使用 HTML5 地理位置数据提交数据。

JavaScript

function geoOk(position)
{
  default_latitude = position.coords.latitude;
  default_longitude = position.coords.longitude;
  $('#my_latitude').html(default_latitude);
  $('#my_longitude').html(default_longitude);

正确生成数据,可以在视图中显示:

<span id="my_latitude"></span> => <span id="my_longitude"></span>

现在表单应该根据这些 JS 生成的变量生成参数。隐藏值是不可能的,因为 ERB 是在 jasvascript 生成任何数据之前在服务器端生成的。

<%= form_tag(:find_by_my_locations, method: :post) do %>
  <%= check_box_tag :location_ok, params[:location_ok] %><%= t('my_location_confirm') %><br />
  <%= submit_tag %>
<% end %>

应该如何为下一个控制器操作生成参数?

在这个应用程序上启用了 jQuery。

编辑

document.querySelector('#form_latitude').value = position.coords.latitude;
document.querySelector('#form_longitude').value = position.coords.longitude;

和形式

  <%= hidden_field_tag "form_longitude" %> 
  <%= hidden_field_tag "form_latitude" %> 

无需准备好文档的 JS bloc 即可工作

【问题讨论】:

    标签: javascript ruby-on-rails-4.2


    【解决方案1】:

    您能否在文档加载后创建另一个函数,该函数可以通过 jquery 检索所需的值并将它们添加到隐藏字段中。

      $(document).ready(function(){
        var longitude = $("#longitude").text();
        $("#hidden_field").val(longitude);
      });
    

    【讨论】:

    • 该值绝对不是参数的一部分。 submit_tag 可能需要 onClick 处理程序?
    • 我不清楚什么不起作用。作为 Rails 视图的一部分,在表单中包含一个隐藏字段,该字段具有一个 id,例如。您可以更新此字段的值作为函数 geoOk 的一部分。 $('#form_longitude').val(default_longitude);
    • 也许我的解释不清楚。表单正在服务器端生成。 javascript 正在客户端执行,并且表单无法定义其值,因为它尚不存在。所以不知何故,只有在单击按钮时才需要传递变量,因为值“存在”。
    • geoOk函数是如何触发的?如果它发生在加载文档后,只要在调用 geoOk 函数后更新隐藏字段的值,它就应该可以工作。我做了一个测试,更新的值在 params 哈希中传递。
    • 前提:当涉及到 sot javascript 时,我很密集......通过 JS 更新 hidden_​​field 对我来说确实是不透明的。你有一个JS小提琴,这个测试很明显,所以我可以尝试理解它?谢谢
    猜你喜欢
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多