【问题标题】:Rails 4 and fields_for using seed data. How to pre-populate form?Rails 4 和 fields_for 使用种子数据。如何预填充表单?
【发布时间】:2016-02-08 16:34:38
【问题描述】:

目标是使用种子数据预填充表单:https://github.com/ornerymoose/GarageApp

迭代停顿号的相关代码在garages_controller.rb

  def new
    @garage = Garage.new
    for i in 1..5 
      @garage.cars.build :stall_number => i
    end
  end

这将给出 5 个stall_number 字符串值,即 1、2、3、4 和 5。不是这样,我将如何迭代 seeds.rb 文件中的值?

Car.create(stall_number: "stall1")
Car.create(stall_number: "stall2")
Car.create(stall_number: "stall3")
Car.create(stall_number: "stall4")
Car.create(stall_number: "stall5")

因此,stall_numbers 的值不再是 1、2、3、4 和 5。它们将具有列在种子.rb 文件中的字符串值。

这是车库里的fields_for街区_form.html.erb

  <%= f.fields_for :cars do |builder| %>
      <p>Enter license for car parked in stall: <%= builder.object.stall_number %></p>
      <%= builder.label :license, "License #:" %><br />
      <%= builder.text_field :license %>
  <% end %>

非常感谢您对此事的任何意见。

【问题讨论】:

    标签: ruby-on-rails-4 fields-for


    【解决方案1】:

    只需在种子文件中执行相同的循环即可。

    for i in 1..5 
      Car.create(stall_number: "stall" + i.to_s)
    end
    

    如果它们是静态的,只需在数组中创建它们并调用它们。

    array = ["stallA", "stallDC", "stall874", "stallNN", "stallPO", "stalSF", "stallRE", "stall456", "stall39", "stall99"]
    
    array.each {|x| Car.create(stall_number: x)}
    

    【讨论】:

    • 感谢您的回复。如果stall_number 字符串更动态怎么办?即“Stall ABC”、“Stall XYZ”等等。
    • 然后你需要添加代码来附加你正在寻找的任何字符串。 'i.to_s' 将整数转换为字符串,因此您只需附加而不进行转换,因为它已经是字符串。 “失速”+字符串变量。这些动态字符串将在哪里生成?它们是静态的并且不在列表中,还是有人输入了字符串值?
    • 明白了,这是有道理的。但是要在控制器中调用它们,如果我有 10 个stall_numbers 并希望从种子文件中填充这些表单字段:10.times {@garage.cars.build(:name =&gt; Car.name)} 只返回Car。解决这个问题的正确方法是什么?
    • 看来您需要添加一个档位模型并将其与车库相关联,然后将汽车与档位相关联。从您当前的模式来看,您可能有多个车库。如果是这样,您将始终只有 10 个位置,并且它们将始终被命名为相同的东西?这样,您可以填充每个车库的摊位。这是正确的,还是你希望它是静态的 10?
    猜你喜欢
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 2015-06-24
    • 2021-10-06
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多