布尔属性的下拉列表在 Rails 中无法正常工作

Tru*_*ran 2 boolean ruby-on-rails drop-down-menu

我的 admin 属性有一个简单的下拉列表,它是一个带有 true/false 值的布尔值:

<td><%= f.select :admin, [ ['Yes', true], ['No', false]]%></td>
Run Code Online (Sandbox Code Playgroud)

这是我的控制器中的更新方法:

def update
 @user = User.find params[:id]
  respond_to do |format|
   if @user.update(user_params)
    format.html { redirect_to @user, notice: 'User has been updated' }
    format.json { render :show, status: :ok, location: @user }
  else
    format.html { render :edit }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end
Run Code Online (Sandbox Code Playgroud)

结尾

但是,当我通过选择“是”将用户更新为管理员时,该用户不会更新/保存为管理员...有谁知道出了什么问题?谢谢!!

Aym*_*byk 7

你应该这样使用options_for_select

<td><%= f.select :admin, options_for_select([['Yes', true], ['No', false]])%></td>
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅http://guides.rubyonrails.org/form_helpers.html#making-select-boxes-with-ease