需要从相关表对象的下拉列表中保存id

时间:2012-11-06 21:18:31

标签: arrays ruby-on-rails-3 forms

我有这个表格来保存我的数据库中的两个表之间的关系

治疗belongs_to :category

类别has_many :treatments

创建治疗时,它应该保存类别的ID,我希望该类别是下拉列表,这是我的表单代码:

<%= form_for(@treatment) do |f| %>  
  <div class="field">
    <select> 
      <% Category.find(:all).each do |cat| %>   
        <option><%= cat.name %></option>  
      <% end %>
    </select>
  </div>

<div class="field">
  <%= f.label :name %><br />
  <%= f.text_field :name %>
</div>

<div class="actions">
  <%= f.submit %>
</div>
  

Okey所以我能够显示所有类别的名称,但我有点失去了我应该如何保存cat.id表格

顺便提一下,如果您没有注意到,我对rails非常陌生:)

有什么想法吗?

更新

这是生成的html

<div class="field">
  <label for="treatment_category">Category</label>
  <br>
    <select id="category_category_id" name="category[category_id]">
    <option value="">Velja flokk</option>
    <option value="1">Nudd</option>
    <option value="2">Heilun</option>
    <option value="3">Nálastunga</option>
  </select>
</div>

okey注意到html中的错误已更改id="treatment_category_id",现在在我的展示视图中,我看到类别与处理相关联,但其名称类似于Category:0x3eb7d90

这是我的观点,它只是一个基本的脚手架,但我添加了.name

<p>
 <b>Category:</b>
  <%= @treatment.category.name %>
</p>

<p>
  <b>Name:</b>
  <%= @treatment.name %>
</p>

1 个答案:

答案 0 :(得分:1)

使用HTML SELECT BOX并将值设置为id值,将文本设置为类别名称。 如果你需要保存超过1个id,那么你可以使用javascript附加一个隐藏的输入,其中包含id的值,以便在发布表单时保存。