用于验证记录的自定义表格

问题描述 投票:1回答:1

我正在尝试创建一个自定义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:这些不是newupdate操作。

感谢您的帮助和时间。

ruby-on-rails form-for
1个回答
1
投票

尝试一下:

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

在routes.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 %>
© www.soinside.com 2019 - 2024. All rights reserved.