Пользовательская форма_ для записи проверки - PullRequest
1 голос
/ 24 марта 2020

Я пытаюсь создать пользовательский form_for, где я проверяю, существует ли запись в таблице или нет. Я провел тонны исследований, но не нашел ничего полезного.

Мой текущий подход заключается в создании простой формы поиска и отображении всех похожих записей. Однако это не то, что я ищу. Идеальный сценарий:

  1. Получить имя записи из form_for
  2. Проверить, присутствует ли эта запись
  3. Если присутствует - перенаправить на одну страницу. Если нет - перенаправить на другую страницу

Мой контроллер:

def validate_name
  @room = Room.new
  name = params[:name]

  if name != nil
    puts "Redirect to page A"
  else
    puts "Redirect to page B"
  end
end

Проблема здесь в том, что всякий раз, когда пользователь заходит на страницу, он автоматически запускает приведенный выше код. Моя цель - создать проверку формы, которая пытается найти точную запись и затем перенаправить на основе условия if else.

Текущий form_for:

= form_for(Room.new, url: name_room_path, method: :get, action: :validate_name) do |f|
  = f.text_field :name
  = f.submit

Я уверен, что мой Форма тоже неверна, потому что я заблудился. Я нашел способы создания пользовательских форм, но не могу понять, как вызвать проверку базы данных на основе ввода пользователя.

PS: это не действия new или update.

Спасибо за вашу помощь и время.

1 Ответ

1 голос
/ 24 марта 2020

Попробуйте:

class RoomsController < ActionController::Base
  def validate_name
    if params[:name] && Room.where(name: params[:name]).last.present?
      puts "Redirect to page A"
    elsif params[:name] && Room.where(name: params[:name]).last.nil?
      puts "Redirect to page B"
    end
  end
end

в маршрутах. Rb:

get '/rooms/validate_name', to: 'rooms#validate_name'

в поле зрения:

<%= form_tag(rooms_validate_name_path, :method => :get  )do %>
  <%= text_field_tag :name %>
  <%= submit_tag %>
<% end %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...