Ruby On Rails Form с целыми названиями вместо цифр в выпадающем списке - PullRequest
0 голосов
/ 20 марта 2011

Привет Я довольно новичок в Ruby On Rails и столкнулся с этой проблемой.

У меня есть 4 таблицы и 1, к которой подключены три других.

  1. Спортивные категории - название каждой категории
  2. Спорт - название каждого вида спорта
  3. Клубы - название каждого клуба
  4. Результаты, t.integer "sportcategory_id" t.integer "sport_id" t.integer "club_id"

Мне удалось создать простую форму редактирования с text_field для каждого поля в результатах. Но как я могу получить имена для целых чисел вместо чисел?

<%= form_for(@result) do |f| %>
  #if...
  #..
  #end
  <div class="field">
    <%= f.label :sportcategory_id%><br />
    <%= f.text_field :sportcategory_id%>
  </div>
  <div class="field">
    <%= f.label :sport_id %><br />
    <%= f.text_field :sport_id %>
  </div>
  <div class="field">
    <%= f.label :club_id %><br />
    <%= f.text_field :club_id %>
  </div>
  <div class="field">
    <%= f.label :result %><br />
    <%= f.text_field :result %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

Я сделал так, чтобы у SportCat, Sports и клубов было много результатов, и эти результаты принадлежат всем им.

Это мой файл контроллера для результатов с редактированием и обновлением

  def edit
    @result = Price.find(params[:id])
  end

  def update
    @price = Price.find(params[:id])

    respond_to do |format|
      if @price.update_attributes(params[:price])
        format.html { redirect_to(@price, :notice => 'Price was successfully updated.') }
        format.xml { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml { render :xml => @price.errors, :status => :unprocessable_entity }
      end
    end

  end

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

1 Ответ

4 голосов
/ 20 марта 2011

Проверьте Rails Form select helper

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-select

<%= form_for(@result) do |f| %>
  <div class="field">
    <%= f.label :sportcategory_id%><br />
    <%= f.select :sportcategory_id, @sportcategories.map {|s| [s.name, s.id]} %>
   </div>   
  <div class="field">
    <%= f.label :sport_id %><br />
    <%= f.select :sport_id, @sports.map {|s| [s.name, s.id]}  %>
 </div>
 <div class="field">
    <%= f.label :club_id %><br />
    <%= f.select :club_id, @clubs.map {|c| [c.name, c.id]}  %>
 </div>
 <div class="field">
    <%= f.label :result %><br />
    <%= f.text_field :result %>
 </div>
 <div class="actions">
    <%= f.submit %>
 </div>

<% end%>

Получите @sportcategories, @sports, @clubs в действиях вашего контроллера.

...