В Rails, как я могу запретить моей функции поиска автоматически запускать пустой поиск при загрузке страницы? - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть контроллер с функцией поиска.Функция поиска отображает предупреждающее сообщение, если пользователь ничего не вводит в поле поиска.Проблема в том, что это сообщение отображается при загрузке страницы - до нажатия кнопки «Отправить».Как мне предотвратить это?

Вот мой код контроллера:

class LocationsController < ApplicationController
  before_action :authenticate_user!

  def index
    if params[:q].blank?
      @message = 'Please enter an address in the field!'
      return
    end

    token = Rails.application.credentials.locationiq_key
    search = LocationiqApi.new(token).find_place(params[:q])

    # Hash#dig will return nil if ANY part of the lookup fails
    latitude = search.dig('searchresults', 'place', 'lat')
    longitude = search.dig('searchresults', 'place', 'lon')

    if latitude.nil? || longitude.nil?
      # Output an error message if lat or lon is nil
      @coordinates = "We couldn't find a place by this name. Please enter a valid place name."
    else
      @coordinates = "Coordinates: " + "#{latitude}, #{longitude}"
    end
  end
end

и мой вид:

<main>
  <h1>Location Search</h1>
  <!-- devise flash messages -->
  <p class="notice"><%= notice %></p>
  <p class="alert"><%= alert %></p>
  <!-- Button to search coordinates -->
  <%= form_tag(locations_path, method: :get) do %>
    <%= text_field_tag(:q) %>
    <%= submit_tag("geocode") %>
    <%= @message %>
  <% end %><br>

  <%= @coordinates %>
</main>

1 Ответ

0 голосов
/ 29 апреля 2019

Добавить в форму поиска местоположения,

<%= hidden_field_tag 'location_search', true %>

В контроллере проверьте как,

if  params[:location_search] && params[:q].blank?
   @message = 'Please enter an address in the field!'
   return
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...