在另一个控制器中列出一个对象

时间:2016-04-12 06:10:35

标签: ruby ruby-on-rails-4

我正在尝试在新的Rails应用程序中执行某些操作。

我有一个用户有一个个人资料的应用。当他填写他的个人资料时,他必须选择他去哪所学校。

我有一个名为“机构”的另一个控制器的学校列表。

我只想使用select标签列出Profile控制器Form上的所有机构。

我该怎么做?

谢谢!

3 个答案:

答案 0 :(得分:1)

如何在个人资料表单上显示机构列表的下拉列表的最简单方法是在视图中使用表单对象的collection_select帮助程序:

<%= form_for(@profile) do |f| %>
  ...
  <%= f.collection_select(:institution_id, Institutions.all, :id, :name) %>
  ...
<% end %>

http://guides.rubyonrails.org/form_helpers.html#select-boxes-for-dealing-with-models

答案 1 :(得分:1)

您可以使用collection_select方法。

= form_for @profile do |f|
  = f.collection_select : institution_id, Institutions.all, :id, :name, {include_blank: true}, class: 'your-css-class'

最好初始化并向您的视图传递一系列机构,以便您可以在以后更改过滤逻辑而不会影响您的观点。

class ProfilesController < ApplicationController
  # GET /profiles/new
  def new
    @profile = Profile.new
    @institusions = Institutions.where(your: 'filter').all
  end
end

# In your views/profiles/new.html.haml
= form_for @profile do |f|
  = f.collection_select : institution_id, @institusions, :id, :name, {include_blank: true}, class: 'your-css-class'

答案 2 :(得分:1)

您只是使用form_for还是使用simple_form?

如果您使用的是form_for: <%= f.collection_select(:institution_id, Institution.all, :id, :name) %>

其中institution_id是Institution to Profile的外键。

如果您使用的是simple_form: <%= f.input :institution_id, :as => :select, :collection => Institution.all %>