嗨,我有以下下拉列表,我想根据用户是否为管理员来预选下拉值。
但是 u.admin 似乎没有完成这项工作。是否可以通过option_for_select实现此目的?
<%= form_tag users_path(u), method: :patch do %>
<%= select_tag :admin, options_for_select([['Admin user', true], ['Normal user', nil]], u.admin) %>
<%= submit_tag 'Update', class: "btn btn-sm btn-primary" %>
<% end %>
下面是我的用户模型
create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false
t.string "avatar"
t.string "lastname"
t.string "firstname"
t.string "description"
t.boolean "admin"
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end
答案 0 :(得分:1)
看起来像值想要一个字符串来匹配数组(这看起来有点奇怪,但是你能做什么?)。因此,您可以致电:
<%= form_tag users_path(u), method: :patch do %>
<%= select_tag :admin, options_for_select([['Admin user', true], ['Normal user', nil]], u.admin.to_s) %>
<%= submit_tag 'Update', class: "btn btn-sm btn-primary" %>
<% end %>
这避免了使用其他变量使视图混乱。希望对您有所帮助:)
答案 1 :(得分:0)
经过几次尝试,我找到了一种将u.admin存储为每个用户变量的方法。这是代码
<%= form_tag users_path(u), method: :patch do %>
<% @admin = u.admin %>
<%= select_tag :admin, options_for_select([['Admin user', true], ['Normal user', nil]], "#{@admin}") %>
<%= submit_tag 'Update', class: "btn btn-sm btn-primary" %>
<% end %>