0

嗨,我对 Ruby On Rails 很陌生,遇到了这个问题。

我有 4 张桌子,其中 1 张桌子与其他三张桌子相连。

  1. Sportcategories - 每个类别的名称
  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 和 clubs 有很多结果,并且结果属于他们所有人。

这是我用于编辑和更新结果的控制器文件

  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

问题二可能会在问题一中得到回答,但我希望能够从所有可用类别、运动和俱乐部的下拉列表中选择其实际名称,然后在更新时传递正确的 ID。

4

1 回答 1

4

检查 Rails 表单选择助手

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>

<% 结束 %>

在您的控制器操作中获取@sportcategories、@sports、@clubs。

于 2011-03-20T19:33:26.167 回答