需要有关编辑操作的帮助

时间:2011-05-05 00:09:55

标签: ruby-on-rails models controllers action

我正在开发角色扮演游戏角色数据库应用程序,我需要一些帮助。

我有两个模型,角色和统计。每个角色都有一个统计模型实例,这是一个包含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 />

1 个答案:

答案 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

我认为如果字符表直接在该表上包含每个统计信息,那么事情可能会简单得多,因此表单可能只是一个字符,而您只在显示页面上创建表单元素对于统计数据。