У меня есть следующая форма:
<% category.child_categories.sort_by(&:name).each do |child_category| %>
<%= form_tag (search_path), :method => "get", class: "search-form" do %>
<label for="checkData" style="cursor: pointer;" class="search">
<%= hidden_field_tag :shop_search, child_category.id %>
<i class="fas fa-search"></i> <%= child_category.name %>
</label>
<%= submit_tag '', :style => "display: none;" %>
<% end %>
<% end %>
Когда я нажимаю на ярлык и если куки [: координаты] существуют, форма отправляется с $(this).parent('form.search-form').trigger('submit.rails');
:
$(".search").click(function(e){
<% if cookies[:coordinates].blank? %>
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(setGeoCookie, displayError);
} else {
alert("Geolocation is not supported by the browser you are currently using. Supported browsers: Chrome 5.0, Firefox 3.5, Internet Explorer 9.0, Opera 10.60, Safari 5.0");
}
function setGeoCookie(position) {
let cookieName = "coordinates";
let now = new Date();
let time = now.getTime();
time += 3600 * 5000;
now.setTime(time);
let cookie_val = position.coords.latitude + "|" + position.coords.longitude;
document.cookie = cookieName +"=" + cookie_val + '; path=/';
$(this).parent('form.search-form').trigger('submit.rails');
}
function displayError(error) {
let errors = {
1: 'error',
2: 'Position unavailable',
3: 'Request timeout'
};
alert("Error: " + errors[error.code]);
window.location.reload(true)
}
getLocation();
<% else%>
$(this).parent('form.search-form').trigger('submit.rails');
<% end %>
});
И когда куки [: координаты] не существует, я должен сначала создать повара ie, а затем вызвать форму внутри function setGeoCookie
. Но по какой-то странной причине форма не представляется. Есть идеи, что я могу делать не так?