Нужна помощь с действием редактирования - PullRequest
0 голосов
/ 05 мая 2011

Я работаю над приложением для ролевых игр и мне нужна помощь.

У меня есть две модели, Персонаж и Статистика. У каждого персонажа будет один экземпляр модели статистики, представляющий собой таблицу с 6 отдельными статистиками. Я использовал частичную визуализацию формы статистики в представлении символов, поэтому я могу создать новую статистику, связанную с этим персонажем, из представления символов. Однако я не могу редактировать статистику и могу сгенерировать более одного экземпляра, что является проблемой.

Мои вопросы:

Как мне кодировать действие редактирования в контроллере статистики, чтобы я мог редактировать экземпляр статистики из представления символов? Я также хочу, чтобы это перезаписало любой имеющийся экземпляр статистики, чтобы у меня не было нескольких наборов статистики на символ.

Спасибо!

РЕДАКТИРОВАТЬ: Вот код:

Из контроллера статистики:

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 голосов
/ 05 мая 2011

У меня также возникают трудности с попыткой выяснить, что вы имеете в виду, но между вашим последним и этим вопросом, я думаю, я могу понять большую часть того, с чем у вас проблемы.

Я собираюсьисходя из предположения, что «статистика» - это отдельная строка таблицы со столбцами для каждой «статистики», которую вы отслеживаете.Если это так, то это должно быть сделано.

# 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

Я действительно думаю, что, возможно, все было бы намного проще, если бы в таблице символов была только каждая статистика непосредственно в этой таблице, так чтоформа может быть только для персонажа, и вы только создаете элементы формы на странице показа для статистики.

...