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

时间:2017-03-31 08:56:04

标签: ruby-on-rails simple-form

情境: 我有一个带有“Port”字段的simple_form。用户应该能够选择最低空闲端口,或覆盖此选择。所有保留的端口都保存在“port”-model中。这意味着每个不在该模型中的端口都可用。

端口模式: 范围是8080-65080。步骤是100(8080,8180,8280 ......)。

ENV:
- Rails 5
- sqlite3
- simple_forms
- html.erb

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

1 个答案:

答案 0 :(得分:1)

假设您的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,您将获得一个包含所有可用端口的阵列,其中最低端口是阵列中的第一个端口。然后,在您的表单中,将其显示给用户。