我正在开发角色扮演游戏角色数据库应用程序,我需要一些帮助。
我有两个模型,角色和统计。每个角色都有一个统计模型实例,这是一个包含6个独立统计数据的表。我已经在Character视图上使用了partial来呈现Statistic表单,因此我可以在Character视图中创建一个与该Character相关联的新Statistic。但是,我无法编辑统计信息,我可以生成多个实例,这两个问题都存在。
我的问题是:
如何在Statistic控制器中编码编辑操作,以便我可以从Character视图编辑Statistic实例?我还希望这可以覆盖任何存在的Statistic实例,这样我就不会得到每个Character的多组Statistics。
谢谢!
编辑:这是一些代码:来自统计控制器:
def edit
@statistic = Statistic.find(params[:id])
end
从角色视图:
%= render "statistics/form" %
此代码呈现的形式:
%= form_for([@character, @character.statistics.build]) do |f| %<br />
div class="field"<br />
%= f.label :strength % <br />
%= f.text_field :strength %<br />
/div<br />
div class="field"<br />
%= f.label :dexterity %br /<br />
/div<br />
div class="field"<br />
%= f.label :constitution %<br />
%= f.text_field :constitution %<br />
/div<br />
div class="field"<br />
%= f.label :intelligence %<br />
%= f.text_field :intelligence %<br />
/div<br />
div class="field"<br />
%= f.label :wisdom %<br />
%= f.text_field :wisdom %<br />
/div<br />
div class="field"<br />
%= f.label :charisma %<br />
%= f.text_field :charisma %<br />
/div<br />
div class="actions"<br />
%= f.submit %<br />
/div<br />
% end %<br />
答案 0 :(得分:0)
我在弄清楚你的意思时也遇到了一些困难,但在你的最后一个问题和这个问题之间,我想我可能会理解你遇到的大部分问题。
我假设'统计'是一个单独的表行,其中包含您正在跟踪的每个“统计数据”的列。如果是这种情况,那就应该这样做。
# character.rb
class Character < ActiveRecord::Base
has_one :statistic
end
# statistic.rb
class Statistic < ActiveRecord::Base
belongs_to :character
end
# characters_controller
def show
@character = Character.find(params[:id])
end
# characters#show.html.erb
<h1><%= @character.name %></h1>
<%= form_for @character.statistic do |f| %>
<fieldset>
<label>Statistics</label>
<%= f.text_field :strength %>
<%= f.text_field :dexterity %>
...
<%= f.submit 'Update' %>
</fieldset>
<% end %>
# statistics_controller.rb
def update
@statistic = Statistic.find(params[:id])
if @statistics.update_attributes(params[:statistics])
redirect_to character_path(@statistic.character, :notice => 'Updated stats'
else
redirect_to character_path(@statistic.character, :error => 'Could not update'
end
end
我认为如果字符表直接在该表上包含每个统计信息,那么事情可能会简单得多,因此表单可能只是一个字符,而您只在显示页面上创建表单元素对于统计数据。