在轨道上的红宝石协会帮助

时间:2011-08-18 08:18:05

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

我已将所有内容完全链接在一起,因此联系人belongs_to :company和公司has_many :contacts一切正常。我唯一的问题是在联系人#new表单中你必须输入公司ID是否可以以某种方式输入公司的名称,因为它也可以转换为后端的ID?目前我的表格看起来像这样。您可能会注意到表单底部的company_id,这是我想要更改的字段。因此,它更加用户友好,而不是插入ID,您可以插入名称或您选择的某种公司列表。请帮帮忙?

<%= form_for(@contact) do |f| %>
  <% if @contact.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@contact.errors.count, "error") %> prohibited this contact from being saved:</h2>

      <ul>
      <% @contact.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name %>
  </div>
  <div class="field">
    <%= f.label :position %><br />
    <%= f.text_field :position %>
  </div>
  <div class="field">
    <%= f.label :email %><br />
    <%= f.text_field :email %>
  </div>
  <div class="field">
    <%= f.label :telephone %><br />
    <%= f.text_field :telephone %>
  </div>
  <div class="field">
    <%= f.label :source %><br />
    <%= f.text_field :source %>
  </div>
  <div class="field">
    <%= f.label :company_id %><br />
    <%= f.text_field :company_id %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

3 个答案:

答案 0 :(得分:4)

您可以使用collection_select帮助程序或简单select帮助程序来实现此目的:

<%= f.select(:company_id, Company.all.collect {|company| [company.name, company.id]}) %>

答案 1 :(得分:2)

当然可以:

<%= select_tag "company", options_from_collection_for_select(Company.all, "id", "name") %>

答案 2 :(得分:0)

您可以使用下拉列表:

看看这个如何在rails Drop down box in Rails

中执行此操作的主题

然后@David Burrows建议

<select name="company[name]">
  <option value="">Please select</option>
  <option value="company_id[1]" selected="selected">company[name]</option>
  <option value="company_id[2]">company[name]</option>
  <option value="company_id[3]">company[name]</option>
</select>

应该这样做。