我正在开发一个项目,当用户创建时,他们应该被添加到团队中。创建新团队时,团队列表会更新。
但是,每次保存用户时,团队都会保存为下拉列表中的第一项。
<%= f.label :team %>
<%= f.select :team, {}, {}, id: :user_team do %>
<% @teams.each do |team| %>
<%= content_tag :option, team.name, value: team.id %>
<% end %>
<% end %>
控制器:
def create
team = Team.find_by(params[:user_team]).id
user = User.new(user_params)
user.team_id = team
if (params[:user_admin] == '0')
user.admin = 'false'
else
user.admin = 'true'
end
if (user.valid?)
user.save
redirect_to "/users/#{user.id}"
else
flash[:notice] = user.errors.full_messages
redirect_to '/users/new'
end
端
def user_params
params.require(:user).permit(:first_name, :last_name, :username,
:password, :password_confirmation, :admin, :team)
end
答案 0 :(得分:0)
这是一个黑暗的镜头,但您可以尝试添加占位符元素,方法是将include_blank: true
传递给您的选择ERB标记,或者提供一个带有如下空值的选项:{{1 }}。前者将是更多的“轨道式”方式,如此处所述:https://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select
为了构建它,我认为正在发生的是你的select总是默认选择第一个元素,因为没有提示或占位符。如果是这种情况,那么如果你没有主动改变它,那么它每次都会发送第一个选项的值。