在form_for帮助器中创建一个下拉列表,引用另一个模型

时间:2018-04-09 21:54:35

标签: ruby-on-rails

我对rails上的ruby很新,我试图在form_for帮助器中创建一个下拉列表,引用另一个模型(用户)。基本上,我试图从用户列表中进行选择,以便将他们的电子邮件复制到接收者字段。

这里到目前为止,我只能手动输入电子邮件地址:

<%= form_for :femail, url: {action: "create"} do |form| %>
<p>
 <%= form.label :from %><br>
 <%= form.text_field :from %>
</p>
<p>
  <%= form.label :to %><br>
  <%= form.text_area :to %>
</p>
<p>
  <%= form.label :subject %><br>
<%= form.text_field :subject %>
</p>
<p>
  <%= form.label :body %><br>
  <%= form.text_area :body %>
</p>
<p>
 <%= form.submit %>
</p>
<% end %>

提前感谢。

1 个答案:

答案 0 :(得分:2)

你需要让你的用户来自某个地方(可能是你的控制器?),我将把它称为@users。然后你可以做类似的事情:

<p>
  <%= form.label :to %><br>
  <%= form.select(:to, options_for_select(@user.map { |u| [u.name, u.email]}) ) %>
</p>

这将显示一组显示user.name的选项,但实际上会提交值user.email。 select标记有一些非常有用的选项(例如,设置默认值,不接受空白条目等)。

更多信息:this section的Rails指南和FormOptionsHelper docs