我在使用 collection_select 创建下拉菜单时遇到问题。所有的导游都说这个
<%= collection_select(:page, :user_id, @users, :id, :full_name) %>
应该可以工作,但是当我运行服务器时,它不是出现的用户列表,而是一个空白列表。关联是页面属于一个用户并且一个用户有很多页面,并且当我调用@users = User.all时应该在控制器中获取数据库中的用户
关于如何填充下拉列表的任何想法?
我在使用 collection_select 创建下拉菜单时遇到问题。所有的导游都说这个
<%= collection_select(:page, :user_id, @users, :id, :full_name) %>
应该可以工作,但是当我运行服务器时,它不是出现的用户列表,而是一个空白列表。关联是页面属于一个用户并且一个用户有很多页面,并且当我调用@users = User.all时应该在控制器中获取数据库中的用户
关于如何填充下拉列表的任何想法?
我也浏览了apidocuments,
它在某处说如果您的调用方法为零,则不包括 :prompt 或 :include_blank 就不会进行选择,
尝试<%= collection_select(:page, :user_id, @users, :id, :full_name, :prompt=>true) %>
您是否将任何内容加载到@users
您的变量中PageController
?
如果它不属于(语义上)控制器,则使其成为辅助方法
module PagesHelper
def users_for_select
User.all
end
end
并且在视图中
<%= collection_select(:page, :user_id, users_for_select, :id, :full_name) %>
还要在控制台中检查:full_name
User 实例的正确方法
User.first.full_name
编辑:关于full_name
带有后备的方法的建议
class User < ActiveRecord::Base
def full_name
"#{first_name} #{last_name}".presence or name
end
end