Rails:为@score创建表单,而在不同的模型中没有直接关联

时间:2012-03-06 21:33:04

标签: ruby-on-rails ruby-on-rails-3 forms

我想创建一个多表单来编辑不同模型的分数。

主要模型是Formrule模型,包含与Scoretype模型的habtm关联 并与房间模型有关联。

两个模型都用于查询Scores模型,从而生成@scores实例。对于这个实例,我想创建一个表单,但问题是没有创建field_for。我知道@scores填充正确,但表单没有显示。

这是我现在拥有的表格

<%= form_tag '/scores/update_scores' do %>
  <table>
    <tr>...</tr>
      <% for score in @scores %>
        <% fields_for :scores, score do |score| %>
           <tr>
              <td>
               <%= score.hidden_field(:form_id) %>
               <%= score.hidden_field(:team_id) %>
               <%= score.hidden_field(:scoretype_id) %>
            </td>
            <td>
              <%= score.number_field :scorevalue %>
            </td>
         </tr>
      <% end %>
    <% end %>
  </table>
  <%= submit_tag 'Update' %>
<% end %>

这些是模型: Formrule

class Formrule < ActiveRecord::Base
  belongs_to :form
  has_and_belongs_to_many :scoretypes
  has_and_belongs_to_many :rooms
  has_many :teams, :through => :rooms
end

Scoretype

class Scoretype < ActiveRecord::Base
  has_many :scores
  has_and_belongs_to_many :formrules
end

class Room < ActiveRecord::Base
  has_many :teams
  has_and_belongs_to_many :formrules
end

class Team < ActiveRecord::Base
  has_many :scores
  belongs_to :room
  belongs_to :group
end

得分

class Score < ActiveRecord::Base
  belongs_to :form
  belongs_to :team
  belongs_to :scoretype
  validates_uniqueness_of :id, :scope => [:team, :scoretype]
end

最后,使用过的控制器(Formrule)

  def show
    @formrule = Formrule.find(params[:id])
    @scoretypes = @formrule.scoretypes.all.collect
    @rooms = @formrule.rooms.all.collect
    @teams = Team.find(:all, :conditions => {:room_id => @rooms})
    @scores = Score.order("team_id").all(:conditions => {:scoretype_id => @scoretypes, :team_id => @teams})
...

为什么表单没有显示?有什么建议吗?

提前谢谢大家!

1 个答案:

答案 0 :(得分:0)

尝试使用<%= fields_for ... %>代替<% fields_for ...%>