Rails - 使用数据库中的值填写表单字段

Rails - fill form field with value from database

场景: 我有一个 simple_form,其中包含一个名为 "Port" 的字段。用户应该能够 select 最低 空闲端口,或覆盖此 selection。所有保留端口都保存在 "port"-模型中。这意味着不在该型号中的每个端口都可用。

端口模式: 范围是 8080-65080。步长为 100(8080、8180、8280...)。

环境:
- Rails 5
-sqlite3
- simple_forms
- html.erb

问题: 我完全不知道如何处理这个任务。我希望得到一个好的提示。我整天都在网上搜索这个任务,但我什么也没找到。

假设您的 Port 模型有一个名为 value 的整数字段作为端口号,转到您的 port.rb 文件并创建以下方法:

def self.available_ports
    unavailable_ports = Port.order(value: :asc).pluck(:value)
    first_port = 8080
    last_port = 65080
    step = 100
    all_ports = (first_port..last_port).step(step).collect { |n| n }
    all_ports - unavailable_ports
end

调用 Port.available_ports,您将获得一个包含所有可用端口的数组,其中最低端口是数组中的第一个端口。然后,在您的表单中,将其显示给用户。