我正在寻找如何处理这种情况的最佳做法。我有一个名为Fixture的模型,其中我创建了一个足球比赛的固定装置,在比赛结束后,我希望能够编辑该固定装置并记录每个团队的结果,但我不确定如何设置我的表格。
理想情况下,我希望能够创建一个没有显示结果部件的新夹具,然后当我编辑夹具时,窗体将具有这些部件,所以像这样的东西
新
<div class="col-md-6 col-md-offset-3 well">
<%= form_for @fixture, html: { multipart: true } do |f| %>
<fieldset>
<!-- Form Name -->
<legend>Create New Fixture</legend>
<div class="form-group">
<%= f.label :tournament_id %>
<%= f.collection_select :tournament_id, Tournament.all, :id, :name, { :prompt => "Please Select a Tournament" }, { class: 'form-control' } %>
</div>
<!-- Text input-->
<div class="form-group">
<%= f.label :home_team %>
<%= f.text_field :home_team, class: 'form-control', placeholder: 'Home Team' %>
</div>
<div class="form-group">
<%= f.label :away_team %>
<%= f.text_field :away_team, class: 'form-control', placeholder: 'Away Team' %>
</div>
<div class="form-group">
<%= f.label :kickoff_time %>
<%= f.time_select :kickoff_time, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.submit 'Submit', :class => 'btn btn-success' %>
</div>
</fieldset>
<% end %>
</div>
修改
<div class="col-md-6 col-md-offset-3 well">
<%= form_for @fixture, html: { multipart: true } do |f| %>
<fieldset>
<!-- Form Name -->
<legend>Edit Fixture</legend>
<div class="form-group">
<%= f.label :tournament_id %>
<%= f.collection_select :tournament_id, Tournament.all, :id, :name, { :prompt => "Please Select a Tournament" }, { class: 'form-control' } %>
</div>
<!-- Text input-->
<div class="form-group">
<%= f.label :home_team %>
<%= f.text_field :home_team, class: 'form-control', placeholder: 'Home Team' %>
</div>
<div class="form-group">
<%= f.label :away_team %>
<%= f.text_field :away_team, class: 'form-control', placeholder: 'Away Team' %>
</div>
<div class="form-group">
<%= f.label :kickoff_time %>
<%= f.time_select :kickoff_time, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :home_team_result %>
<%= f.text_field :home_team_result, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.label :away_team_result %>
<%= f.time_select :away_team_result, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.submit 'Submit', :class => 'btn btn-success' %>
</div>
</fieldset>
<% end %>
</div>
在尝试访问编辑表单时,我收到错误
undefined method error :home_team_result
不确定这是否与我的列设置为:整数的事实有关。
这是我的架构
create_table "fixtures", force: true do |t|
t.string "home_team"
t.string "away_team"
t.time "kickoff_time"
t.integer "tournament_id"
t.integer "home_score_result"
t.integer "away_score_result"
t.datetime "created_at"
t.datetime "updated_at"
end
我想到了一些想法
1)在新表单上隐藏home_team_result和away_team_result,并指定默认值0
2)再次隐藏列并有一个按钮&#39;添加结果&#39;揭示领域
但是我不确定隐藏字段是答案,因为它可以操作吗?理想情况下,我想在一个&#39; Rails Way&#39;中处理这个问题。如果这是有道理的
任何帮助表示赞赏
由于
答案 0 :(得分:2)
查看错误undefined method error :home_team_result
,我们可以说home_team_result
模型中没有名为Fixture
的字段。
home_team_result
必须是Fixture
模型中的属性。使其成为虚拟属性(使用attr_accessor
)或在名为fixtures
的{{1}}表中创建列。
<强>更新强>
表home_team_result
中的实际列名称为fixtures
和home_score_result
,而在视图中您正在访问away_score_result
和home_team_result
。因此,错误。