下拉框 - 填充表单中另一个表的数据 - Ruby on Rails

时间:2009-11-02 20:30:48

标签: ruby-on-rails

我正在尝试为我正在创建的CRM添加注释功能。我正在使用经过身份验证的环境,用户可以管理他们的潜在客户。例如,我注册,我登录,我可以进入潜在客户并查看它们。所以...我已经创建了一个潜在客户和用户表,让他们一切都很好。我现在正试图让用户能够记录并将其“附加”给潜在客户。所以......我创建了一个带有列的笔记表,注意&展望。用户可以从他们提取此表单的任何位置记录,我的目标是在下拉框中提供他们的客户名称以附加到表单。到目前为止,我已在前景控制器中创建了一个对象,其中包含以下内容

def index
    @myprospects = current_user.prospects.find(params[:id])
  end

我正在努力在view / notes / new.html.erb文件中创建下拉列表的下一步。表格如下:

<h1>New note</h1><hr/>

<% form_for(@note) do |f| %>
  <%= f.error_messages %>

  <p>
    <%= f.label :note %><br />
    <%= f.text_area :note %>
  </p>
  <p>
    <%= f.label :prospect %><br />
    <%= f.text_field :prospect %>
  </p>
  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

<%= link_to 'Back', notes_path %>

如何映射

  <p>
    <%= f.label :prospect %><br />
    <%= f.text_field :prospect %>
  </p>

字段显示我想要的数据?我是三天进入轨道,所以跟我说话,就像我10岁(一个不知道铁轨的10岁)。

1 个答案:

答案 0 :(得分:10)

您正在寻找一个选择框。

Rails提供了很多辅助工具来创建form inputs.正确的工作是collection_select

假设您已正确设置备注和潜在客户之间的多对一关系,并且在潜在客户表中包含潜在客户名称的列称为“名称”,这将完全符合您的要求:

<p>
  <%= f.label :prospect %><br />
  <%= f.collection_select :prospect_id, @myprospects, :id, :name, :prompt => "Select a prospect" %>
</p>