0

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

治疗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>

好的,所以我能够显示所有类别名称,但我有点迷失了如何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>
4

1 回答 1

1

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

于 2012-11-06T21:22:50.850 回答