Одна кнопка «Отправить» с несколькими формами - PullRequest
0 голосов
/ 23 марта 2011

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

  1. Теперь это выглядит так .
  2. Это то, что я хочу, чтобы это было .
  3. Вот модели, задействованные в представлении. Просто нажмите на следующее изображение = последнее изображение в фотопотоке (опять StackOverflow не позволит мне публиковать более 3 гиперссылок).

Это представление выше: localhost / matchdays / 4 / matchs / new

Отношения будут выглядеть так:

  1. Матч имеет множество совпадений.
  2. A Match has_many games (максимум 3, но пока мы будем придерживаться 1). Мы обновим атрибут оценки.
  3. Игра имеет множество пар (максимум 2).

Мой вопрос:

  1. Как вы кодируете в MatchesController (когда пользователь нажимает кнопку «Старт»), чтобы создать игру с 2 парами, и у каждой пары есть собственный счет (что является атрибутом в модели игры)?

  2. Как выполнить цикл в представлении для добавления другой формы «Игра» (атрибут «Счет») и «Пара», принадлежащей к Матчу (в данном случае к Матчу 10)? Как на скриншоте 2 выше.

Контроллер соответствий:

  def new
    @matchday = Matchday.last
    @match = Match.new()
    @match.number = match_numbering
    @pairs = Pair.all
    @matchday.best_of.times { @match.games.build }
  end

  def create
    @match = Match.new(params[:match])
    @matchday = Matchday.last
    @match.number = match_numbering
    if @match.save
      @matchday.matches << @match
      flash[:success] = "Match recorded"
      redirect_to matchdays_path
    else
      @title = "Record Match"
      render 'new'
    end    
  end 

/ вид / спички / новый:

<h1>Match <%= @match.number %> of Matchday <%= @matchday.number %> details</h1>

<%= form_for @match, :url => {:action => 'create', :id => @match.id } do |p| %>
    <%= render 'shared/error_messages', :object => p.object %>

    <%= render :partial => 'match_form', :locals => {:p => p} %>

    <% for game in @match.games %>
        <%= fields_for :games, game do |game_form| %>
            <p>
                Score: <%= game_form.text_field :score, :size => 2 %>               
            </p>
            <p>
                Pair: <%= select(@pairs, :pair_id,Pair.all.collect{|p| [p.name]}) %>
            </p>
        <% end %>
    <% end %>

    <div class = "action_links">
        <p> <%= link_to "Cancel", matchdays_path, :class => "cancel" %> | 
            <%= p.submit "Start" %></p>
    </div>
<% end %>

Я думаю, что цикл должен быть где-то в цикле for, но не уверен, как это реализовать. Плюс мои поля_для выбора формы могут быть неправильными ... многому научиться:)

1 Ответ

0 голосов
/ 25 марта 2011

Все, что мне нужно было сделать, это добавить эту строку в Match.rb

has_many  :games
accepts_nested_attributes_for :games, :allow_destroy => true
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...