Rails - 嵌套表单 - 从另一个模型获取属性

Rails - Nested Forms - Get a attribute from another model

我是 Rails 的新手,所以这可能是个愚蠢的问题。我正在努力以嵌套形式从另一个模型中获取属性。让我解释一下:

我有 3 个模型相互关联。 Poi -> PoiDescription <- DescriptionType 一个 Poi 可以有多个描述,一个描述只有一种描述类型。我正在使用嵌套表单在 Poi 表单内创建 PoiDescriptions。一切都运行良好,但现在,在 fields_for 内,我想要在文本区域之前使用描述类型名称的标签。但我不知道如何获得它...我无法执行类似 'p.description_type.name' 的操作,那么我如何才能获得该属性?

这是我的代码:

Poi控制器

def new
  @poi = Poi.new
  @descriptions = DescriptionType.all
  @descriptions.each do |d|
   @poi.poi_descriptions.new(description_type_id: d.id)
  end
end

Poi形式

<%= form_with model: @poi do |f| %>
...
  <div class="col-md-12">
     <%= f.fields_for :poi_descriptions do |p| %>
       <%= p.hidden_field :description_type_id %>
       <%= p.text_area :description %>
     <% end %>
  </div>
...

架构

create_table "description_types", force: :cascade do |t|
  t.string "name"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
end

create_table "poi_descriptions", force: :cascade do |t|
  t.text "description"
  t.bigint "poi_id"
  t.bigint "description_type_id"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.index ["description_type_id"], name: "index_poi_descriptions_on_description_type_id"
  t.index ["poi_id"], name: "index_poi_descriptions_on_poi_id"
end

create_table "pois", id: :serial, force: :cascade do |t|
  t.text "name"
  t.float "longitude"
  t.float "latitude"
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.integer "monument_id"
  t.integer "beacon_id"
  t.string "image_file_name"
  t.string "image_content_type"
  t.integer "image_file_size"
  t.datetime "image_updated_at"
  t.index ["beacon_id"], name: "index_pois_on_beacon_id"
  t.index ["monument_id"], name: "index_pois_on_monument_id"
end

希望你能帮助我!提前致谢。

要从 form_builder_object 到实际的 object 你可以做 p.object.description_type.name

如果您只想将其作为标题而不是输入字段,您可以:

  1. 将其添加到 pspan 标签中,使其看起来像带有 css 或
  2. 的标签
  3. 根据需要添加带有自定义名称和标题的 label_taghttps://apidock.com/rails/ActionView/Helpers/FormTagHelper/label_tag