我正在尝试在新的Rails应用程序中执行某些操作。
我有一个用户有一个个人资料的应用。当他填写他的个人资料时,他必须选择他去哪所学校。
我有一个名为“机构”的另一个控制器的学校列表。
我只想使用select标签列出Profile控制器Form上的所有机构。
我该怎么做?
谢谢!
答案 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 %>