无法使用嵌套属性表创建表单

时间:2012-08-27 05:39:38

标签: ruby-on-rails nested-forms nested-attributes

我有Report个嵌套Value个对象:

报告课

class Report < ActiveRecord::Base
  attr_accessible :comments
  has_many :values
  accepts_nested_attributes_for :values
end

价值等级

class Value < ActiveRecord::Base
  attr_accessible :value, :assessed_user_id, :behaviour_id

  belongs_to :assessed_user
  belongs_to :behaviour

  belongs_to :report

end

我需要一个接受Report及其关联的Value对象矩阵的表单,如下所示:

| User | Behaviour1 | Behaviour2 | Behaviour3 |
| Bob  |     ___    |    ___     |    ___     |
| Jane |     ___    |    ___     |    ___     |
| Jill |     ___    |    ___     |    ___     |

我是rails的新手,我已经阅读了有关嵌套属性的所有内容,我已经尝试了semantic_form_for上的一百万个变体以及formtastic的可能性,但我似乎无法放置正确的value.value对象位于正确的位置或将behaviourassessed_user设置为隐藏字段,但我似乎无法使其工作。

以下显示了应该是隐藏字段的内容,我无法让我的创建(跟随)接受它。另外,我在子表单元素上看不到任何索引:

<%= semantic_form_for @report do |f| %>
  <table>
    <tr>
      <th>User</th>
    <% @behaviours.each do |behaviour| %>
      <th><%= behaviour.name %></th>
    <% end %>
    </tr>
    <% index = 0 %>
    <% @members.each do |member| %>
      <tr>
        <td><%= member.first_name %> <%= member.last_name %></td>
        <% @behaviours.each do |behaviour| %>
          <% @report.values[index].behaviour_id = behaviour.id %>
          <% @report.values[index].assessed_user_id = member.id %>
          <td>

              <%= f.inputs :behaviour_id, :as => :hidden, :for => @report.values[index] %>
              <%= f.inputs :assessed_user_id, :as => :hidden, :for => @report.values[index] %>
              <%= f.inputs :value, :for => :values, :for => @report.values[index] %>
              <% index = index + 1  %>
          </td>
        <% end %>
      </tr>
    <% end %>  

  </table>
  <%= f.inputs :comments %>

  <%= f.buttons %>
<% end %>

reports_controller.rb

def create
  @report = Report.new( params[:report] )
end

1 个答案:

答案 0 :(得分:0)

相关问题