自定义 form_for 验证记录
Custom form_for to validation record
我正在尝试创建一个自定义 form_for
,我在其中检查记录是否存在于 table 中。我做了很多研究,但没有想出任何有用的东西。
我目前的做法是创建一个简单的搜索表单并显示所有相似的记录。但是,这不是我想要的。理想情况是:
- 从
form_for
获取记录名称
- 检查这条记录是否存在
- 如果存在 - 重定向到一页。如果不是 - 重定向到另一个页面
我的控制器:
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
操作。
感谢您的帮助和时间。
试试这个:
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 %>
我正在尝试创建一个自定义 form_for
,我在其中检查记录是否存在于 table 中。我做了很多研究,但没有想出任何有用的东西。
我目前的做法是创建一个简单的搜索表单并显示所有相似的记录。但是,这不是我想要的。理想情况是:
- 从
form_for
获取记录名称
- 检查这条记录是否存在
- 如果存在 - 重定向到一页。如果不是 - 重定向到另一个页面
我的控制器:
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
操作。
感谢您的帮助和时间。
试试这个:
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 %>