ruby-on-rails - rails : how to render nested form in table

标签 ruby-on-rails form-for

例如,我有两个模型:

class Task < ApplicationRecord
   has_many :task_details
end

class TaskDetail < ApplicationRecord
  belong_to :task
end

我想显示一个表格,表格中的每一行都是一个TaskDetail并允许用户输入。用户提交后,所有数据将发送到服务器。这是我的代码: (请注意:我@data[:task]是一个任务对象,因为我想返回一个包含一些信息的哈希值以供查看)

<%= form_for @data[:task], :url => tasks_path do |f| %>
    <table> ... </table>
<% end %>

我的问题是:我怎样才能按照我的要求去做。

谢谢

最佳答案

确保您的 Task 模型具有 accepts_nested_attributes_for :task_details 然后您可以执行以下操作...

<%= form_for @data[:task], :url => tasks_path do |f| %>
  <table>
    <tr>
      <th>Task Name</th>
      <th>Task Description</th>
    <tr>
    <%= f.fields_for :task_details do |task_detail| %>
      <tr>
        <%= task_detail.hidden_field :id %>
        <td><%= task_detail.text_field :name %></td>
        <td><%= task_detail.text_field :description %> </td>
      <tr>
    <% end %>
  </table>    
<% end %>

请注意 :id 隐藏字段的使用...您需要它,以便 Rails 可以区分现有任务和您正在输入的新任务中的数据。

在您的 new 方法中,您应该确保至少有一个 new 任务详细信息,以便在表单上提供一个空行来输入详细信息

def new
  ...
  @data[:task].task_details.build
  ...
end

关于ruby-on-rails - rails : how to render nested form in table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40214048/

相关文章:

ruby-on-rails - 自升级到 rails 3.1 以来,form_for 参数数量错误(3 为 2)

ruby-on-rails - 将 onClick 事件附加到 Rails 的 link_to_function

ruby-on-rails - 为什么我的 Rails worker 不执行?

ruby-on-rails - 使用 Mongoid 从数据库延迟下载字段,或处理大型文档

ruby-on-rails - rails 4.0 : Selected value for form_for [select]

ruby-on-rails - form_for 和 form_tag 的区别?

ruby-on-rails - 使用 Rails form_for 的漂亮单选按钮

ruby-on-rails - 将动态生成的文件作为电子邮件发送

javascript - Rails - 使用 javascript 禁用 select_tag

ruby-on-rails - 乘客使用错误的 ruby​​ 版本