【问题标题】:How do I add different field types using rails nested_form如何使用 rails nested_form 添加不同的字段类型
【发布时间】:2015-05-29 12:12:22
【问题描述】:

我想使用 ryanb/nested_form gem(或类似的)来创建与许多不同字段类型的关联。考虑一个名为 content 的模型,它可能有许多 content_blocks,它们应该有文本输入、文本区域或图像上传字段(不同的字段类型),具体取决于所需的内容。有人对如何实现这一目标有想法吗?到目前为止,我只能弄清楚如何添加相同类型的多个字段。即标准项目->任务->子任务...模式。

或者有更好的解决方案吗?

谢谢! -J

【问题讨论】:

  • 你的意思是你想为 content_block 编写一个嵌套表单的内容表单。您应该能够在创建内容时添加多个 content_blocks。对吗?
  • 是的,就是这样,关键是 content_blocks 中的不同表单字段,例如 link

标签: ruby-on-rails nested-forms nested-form-for


【解决方案1】:

您可以将cocoon gem 用于nested_form。此外,Ryan Bates 在Railscasts 上提供了一个关于嵌套表单的好教程

【讨论】:

    【解决方案2】:

    如果你的模型定义正确,那么下面代码收到的参数应该包含一步创建多个任务和子任务的所有信息。

    <%= f.fields_for :tasks do |task_form| %>
      <%= task_form.text_field :name %>
    
      <%= task_form.fields_for :sub_tasks do |sub_task_form| %>
        <%= sub_task_form.text_field :sub_name %>
        <%= sub_task_form.link_to_remove "Remove this subtask" %>
      <% end %>
      <p><%= f.link_to_add "Add a task", :sub_tasks %></p>
    
      <%= task_form.link_to_remove "Remove this task" %>
    <% end %>
    <p><%= f.link_to_add "Add a task", :tasks %></p>
    

    请注意,最新版本的nested_form 确实会为同一步骤中的多个创建正确生成 id。要修复此issue,您必须使用:

    gem 'nested_form', github: 'ryanb/nested_form'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多